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

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

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

いつもお世話になっております。 初歩的質問かも知れませんが、宜しくお願いします。 EXCEL2007使用。 Sheet2に下記のような値があります。    A    B    C    D    E 1 あか  きいろ みどり みどり  しろ 2 しろ        しろ   しろ   くろ 3 しろ        あか   しろ   あお 4 きいろ       あお   しろ   あお 5 くろ                   あか 6 くろ                   あお 7                      しろ A1:E7までの範囲の値を、 Sheet1にあるテキストボックス(またはコンボボックス)に縦に表示したいのです。 A~Eの複数の列の値には空白も含まれていて、 縦一列に値を表示するにも、空白を省く処理ですでに躓いております。 何か良い方法がありましたら、 ぜひご教授お願いいたします。

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

  • ベストアンサー
  • 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/7940)
回答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

  • テキストの処理について

    phpを勉強中の初心者です。 テキストの処理について質問させていただきます。 あか 1 しろ 2 きいろ 3 きいろ 4 きいろ 9 あお 23 くろ 30 くろ 33 というテキストを あか 1 しろ 2 きいろ 3,4,9 あお 23 くろ 30,33 というように置換えることは可能でしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • セルに値をいれたら、いついれたか表示されるのVB

    すいません。質問です。 セルに値をいれたら、 その入力は、いつ入力したかの日付が表示されるのVBが知りたいです。 例としては A列に任意に数字を入れます。 そうすると、B列に日付が入ってほしいのです。 ↓↓↓↓↓↓↓↓↓↓↓    A    B    C 1 あお 1/12土 2 3 4 あか 1/15火 5 上記のように、A1に「あお」といれたらB1に「それを入力した日付」 上記のように、A4に「あか」といれたらB4に「それを入力した日付」 がいれたいです。(次にファイルを開いたときも、todayでなくその入力日の情報のままで) ここをみたら、 http://q.hatena.ne.jp/1184651644 できそうなんですが、 これ、A1とA2という単独のセルにに対してしかできなさそうで、 A列に対して、B列にずっと表示するには、どういうマクロをくめばよろしいのでしょうか? どうぞおしえてくださいませm(_ _)m

  • [エクセルVBA]セルの値をテキストボックスに表示

    よろしくお願いします。 ユーザーフォームを使って作業しています。 その中で、コンボボックス1で指定した名前を検索値として、VLOOKUPを使ってあるシート(例:シート名「時間検索」)からセルの値をテキストボックスに表示させるようにしたいのです。 コードを作成し表示させることはできたのですが、セルに入っている値の書式が「[h]:mm」の時間形式(例:19:00)のためか、セルの値を引っ張ると小数点(例:0.79166....)で表示されます。 色々と調べてみた中で、format関数を使ったりしてみたんですが不首尾に終わっています。 なんとかテキストボックスに、セルと同じ形式で表示したいのですが、どのように考えればよろしいでしょうか? ご教示お願いいたします。 質問の仕方が悪かった場合は補足・訂正させていただきますので、どうぞよろしくお願いします。

  • Excel 関数 入力規則など

    1番 あか    きいろ    あお   2番 しろ    みずいろ    オレンジ 3番 くろ    灰色    茶色 という分類があったとします。 エクセルの入力規則などでまず、A列は、1番・2番・3番のドロップダウン表示 B列は、さらに選んだアルファベット1番・2番・3番の項目のドロップダウンリスト (たとえば1番ならあか・きいろ・あお)を表示させたいです。 どのような関数を使えばいいでしょうか? よろしくお願いします。 説明がわからなければ補足します。よろしくお願い致します。

  • エクセルVBAで、ユーザーボックスを開いたときにテキストボックスにセル

    エクセルVBAで、ユーザーボックスを開いたときにテキストボックスにセルの値を自動で表示させたいのですが、うまくいきません。テキストボックスをクリックすると表示されるのですが・・・    Private Sub txt1_Change() Sheets("Sheet1").Range("a1").Value=txt1.Value End Sub としたのですが、やはり間違いなのでしょうか?

  • エクセル/テキストボックス、セル枠の表示が遅れる?

    既に入っているセルの値などシート内のデータに変化を加えず、下の作業を行った時、セルの値に遅れて、テキストボックスとセルの枠線が表示されているように見えます。遅れるというよりも、瞬間ではありますが、テキストボックスと枠線が消えてから再表示されているように見えます。これはなぜでしょうか?この現象のため、チラついて見えるのですが、教えてください。よろしくお願いします。  同一ブック内で他シートから切替えて表示した時  最小化から最大化して表示した時  他ソフトなどの画面が前面にあり、それを閉じた時 作成内容/商品別(縦)・月別(横)の売上表を作成。      縦項目数:20、横項目数:15      数式なしで全てのセルは値のみ入力 個人的な美観が問題点?/ ・商品名や月名を、セルではなく、テキストボックスを  使用している。セルのフォントサイズが14とやや大き  めで太字である。

  • セルの値をリストボックスに表示させる方法

    マクロ初心者です。書き方が分からないので教えてください。 会社で伝票を作っているのですが、シートが9つあります。それで、例えば、A列に3という数字が入っていて、同じシートや、他のシートにも、3があれば、その行番号と列番号と値をリストボックスに表示させたいと思っているのですが、うまくいきません。というか、書き方が分かりません。 どなたか、分かる方がいらっしゃいましたら教えて下さい。うまく説明できなくてすみません。

  • シート上のリストボックスに値を表示するには?

    エクセル2003です。 コントロールツールボックスからシートにリストボックスを設置しました。 ここに値を指定するにはどうすればいいでしょうか? フォーム上のリストボックスなら Private Sub UserForm_Initialize() UserForm1.ListBox1.RowSource = "Sheet1!a2:a3" End Sub とすればいいのですが シートのイベントにInitializeはありません。 どこのイベントプロシージャーに 「リストボックスに値を表示する」というコードを書けばいいのでしょうか? シートモジュールにに Private Sub ListBox1_Click() UserForm1.ListBox1.RowSource = "Sheet1!a2:a3" End Sub としても何も起こりません。 できればファイルを開いた時からリストボックスに値を表示させるようにしたいです。 ご教授よろしくお願い致します。

  • セルの値を1桁ずつ、テキストボックスへ

    幾つかの値が入力されたセルから1桁ずつ取り出して、テキストボックスへバラバラに表示させたいのですが・・・よろしくお願いします。 例えば1234567等の7桁の値が入力されたセルがあって、それを指定したテキストボックスへ1、2、3、4、5、6、7と7つのテキストボックスへ表示させたいのです。 セルからセルだったらMID(A1,1,1)で“1”を取得できますが、これをテキストボックスで取得したいのです。 事前にセルで取得してテキストボックスとリンクさせていたのですが、元のデータが変わるたびにやり直さないといけないので、テキストボックスから直接取得させたいのですが、何か良い方法がありましたら宜しくお願いします。

  • 【Excel VBA】Sheet1上のテキストボックスの値をクリアしたい

    Office2003を使用しています。 Excelで、 Sheet1に作成したテキストボックス『BOX_A』 Sheet1に作成したコマンドボタン『PUSH_A』があります。 PUSH_Aを押下時、BOX_Aの値をクリア(消去)したいのですが、うまく行きません。 (BOX_Aに連結しているセルをクリアしても、テキストボックスには数字が残ります) どのようにコーディングしたらよろしいでしょうか?

専門家に質問してみよう