• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA 複数のセルの値をテキストボックスに表示する)

VBAで複数のセルの値をテキストボックスに表示する方法

このQ&Aのポイント
  • Excel2007を使用して、Sheet2のセルの値をSheet1のテキストボックスに縦に表示する方法について教えてください。
  • VBAを使用してA1:E7の範囲の値を取得し、縦一列に表示する方法を教えてください。
  • 空白を省いてセルの値をテキストボックスに表示する方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.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

tokyo2199
質問者

お礼

ありがとうございます。 思った通りになりました。 空白を詰める方法がどうしてもわからず、 四苦八苦していましたが・・・ こんな方法があったとは。 本当に勉強になります。 ありがとうございました。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

ListBox(またはコンボボックス)を配置し,プロパティで ColumnCountを5 ColumnWidthを例えば45;45;45;45;45 ListFillRangeにSheet2!A1:E7 と設定してみます。

tokyo2199
質問者

お礼

今回はmt2008様の方法で対処いたしましたが、 keithin様の方法も大変勉強になりました。 またわからないときは質問させていただきますので、 その時は宜しくお願いいたします。 ありがとうございました。

tokyo2199
質問者

補足

ありがとうございます。 素人の私にも直下的に理解できるものでした。 しかし、私の求めている結果とは少し違います。 値を全て縦に表示したいのです。 A列の値の下にB列の値といった感じです。 A1:E7の範囲内の値を、空白のない状態で詰めて 縦表示することはできませんか? 説明不足で申しわけありません。 宜しくお願いいたします。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 A1→B1→C1~A2→B2~E7順です。 For Each a In Range("A1:E7") If a.Value <> "" Then テキストボックス転送 Endif Next

tokyo2199
質問者

お礼

ありがとうございました。 変数の型で躓くほどの素人ですが、 良い参考となりました。 自分なりに改良して頑張りたいと思います。

関連するQ&A