- ベストアンサー
VBAで複数のセルの値をテキストボックスに表示する方法
- Excel2007を使用して、Sheet2のセルの値をSheet1のテキストボックスに縦に表示する方法について教えてください。
- VBAを使用してA1:E7の範囲の値を取得し、縦一列に表示する方法を教えてください。
- 空白を省いてセルの値をテキストボックスに表示する方法について教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
テキストボックスって、シートに貼り付けたテキストボックスでいいですか? Sub sample() Dim vData As Variant Dim oTextbox As OLEObject Dim nFlag, i, j 'テキストボックスを探す(今回は最初に見つけたテキストボックスが対象) nFlag = 0 For Each oTextbox In Worksheets("Sheet1").OLEObjects If TypeName(oTextbox.Object) = "TextBox" Then nFlag = 1 Exit For End If Next If nFlag = 0 Then MsgBox ("テキストボックスがありません") Exit Sub End If oTextbox.Object.Value = "" 'テキストボックスのクリア oTextbox.Object.MultiLine = True '念のため複数行をTrueに 'テキストボックスに値を入れる vData = Worksheets("Sheet2").Range("A1:E7") For i = 1 To 5 For j = 1 To 7 If vData(j, i) <> "" Then oTextbox.Object.Value = oTextbox.Object.Value & vData(j, i) & vbCrLf End If Next j Next i End Sub
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
ListBox(またはコンボボックス)を配置し,プロパティで ColumnCountを5 ColumnWidthを例えば45;45;45;45;45 ListFillRangeにSheet2!A1:E7 と設定してみます。
お礼
今回はmt2008様の方法で対処いたしましたが、 keithin様の方法も大変勉強になりました。 またわからないときは質問させていただきますので、 その時は宜しくお願いいたします。 ありがとうございました。
補足
ありがとうございます。 素人の私にも直下的に理解できるものでした。 しかし、私の求めている結果とは少し違います。 値を全て縦に表示したいのです。 A列の値の下にB列の値といった感じです。 A1:E7の範囲内の値を、空白のない状態で詰めて 縦表示することはできませんか? 説明不足で申しわけありません。 宜しくお願いいたします。
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 A1→B1→C1~A2→B2~E7順です。 For Each a In Range("A1:E7") If a.Value <> "" Then テキストボックス転送 Endif Next
お礼
ありがとうございました。 変数の型で躓くほどの素人ですが、 良い参考となりました。 自分なりに改良して頑張りたいと思います。
お礼
ありがとうございます。 思った通りになりました。 空白を詰める方法がどうしてもわからず、 四苦八苦していましたが・・・ こんな方法があったとは。 本当に勉強になります。 ありがとうございました。