2017-07-27 3 views
0

名前付き範囲(またはユーザー定義範囲)には6列ありますが、行数は他の機能に基づいて変更されることがあります。TextBoxへのnamed_rangeのVBAコピー値

6つの列とすべての行の、その範囲の値全体をTextBoxに取得しようとしました。行はタブで区切られます。

次のコードを返しますが、エラー定義されたオブジェクトなど

UserForm1.TextBox1.Value = Sheet1.Range("named_range").Value 

感謝すべてのヘルプ。

編集:

FunThomasが正しいと、私はそれを別の行を宣言しない範囲の値を取得することができwon'e。だから私は、マルチラインのmsgBoxで範囲を表示するのにうまくいく以下のコードから始めました。

どのように追加のInputBoxを取り除き、制限された機能を持つmsgBoxの代わりにUserForm1.TextBox1に結果を表示しますか?あなたが複数の行を持っていたよう

Sub showOfferRange() 
Dim xRg As Range 
Dim xTxt As String 
Dim xCell As Range 
Dim xStr As String 
Dim xRow As Long 
Dim xCol As Long 
On Error Resume Next 
    xTxt = ThisWorkbook.Names("offers_running") 
Set xRg = Application.InputBox("Offer range:", "Display offers", xTxt, , , , , 8) 
'Set xRg = xTxt 
If xRg Is Nothing Then Exit Sub 
    On Error Resume Next 
For xRow = 1 To xRg.Rows.Count 
    For xCol = 1 To xRg.Columns.Count 
     xStr = xStr & xRg.Cells(xRow, xCol).Value & vbTab 
    Next 
    xStr = xStr & vbCrLf 
Next 
    MsgBox xStr 
End Sub 
+0

参照[リンク](https://stackoverflow.com/documentation/excel-vba/1576/common-mistakes#t=201707270717591076459)リンクがどのように – FunThomas

+0

わからないにsteatementsを変更示唆します私の質問に関連して。 – joell

+0

おそらく、あなたはワークブックの 'sheet1'にアクセスしたいと思いますが、' sheet1'という名前の変数にアクセスしています。ですから、 'thisWorkbook.sheets(" sheet1 ")'や 'activeWorkbook.sheets(" sheet1 ")'のようなものが必要だと思いますが、これは推測に過ぎません。このリンクでは、ブックやワークシートオブジェクトにアクセスする方法について説明しています。 – FunThomas

答えて

0

基本的には、フォームのテキストボックスにテキストを書くために、ちょうど

UserForm1.TextBox1.text = UserForm1.TextBox1 
UserForm1.show 

をit's、テキストボックスのMultiLine -Propertyを設定することを忘れドント〜true

別のポイント:範囲を読み取る行を変更する必要があります。 on error resume nextはすべてのエラーを食い止め、完全に失われてバグを見つけることができるので、非常に危険な声明です。入力ボックスがRangeを返さないケースをキャッチする必要があるだけです(たとえば、キャンセルが押されたためです)。だから私は、あなたが

xTxt = ThisWorkbook.Names("offers_running") 
Set xRg = Nothing 
On Error Resume Next 
Set xRg = Application.InputBox("Offer range:", "Display offers", xTxt, , , , , 8) 
On Error Goto 0 
If xRg Is Nothing Then Exit Sub 
+0

素晴らしい作品です。ありがとうございました! 1つの最後の質問inputBoxをどうやって取り除くのですか?私はこの余分なステップを望んでいません。 Set xRg = xTxtを使用すると、型不一致エラーが発生します。おそらく文字列を範囲として渡そうとしています。 – joell

関連する問題