• 締切済み

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

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

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 それは、すみませんが、その補足の説明では、逆に全体の構成がつかめないのです。 ・1つめのリストボックスに検索の文字をいれます。 ->それは、TextBox ではありませんか? リストボックスに代入するということは通常ありえません。 ・検索結果を2つめのリストボックスに表示させたい ・検索結果の2つ目のシートに入れたい 検索結果として、二重になっていますね。 #2でお書きしたように、「どういう目的の内容なのか意味が分からない」と書きましたが、今の説明では、良く分からないのです。 「作ってください->それは違います。こういうことです。」 そういう内容、常に小出しにされるのは遠慮していただきたいのです。 前回書かれていないくて、UserForm に、これとこれがあるので作り直してください、というのでは、それは出来ないのです。こちらでは、すでにヒントになるコードは差し上げました。ある程度の力があれば、十分応用できるはずです。 具体的な位置関係、検索の種類、予想される検索結果、検索結果の出力する場所など、一切書かれていないままに、ダメ出しされても、それは不可能なのです。 ご自分で、コードを作るつもりになって、どうしたらよいのか、少し考えてみてください。まったく、VBAを知らない方でも、VBAを知っているように説明できる方もいらっしゃいますから、もう少し、論理的に手順と具体的な位置を説明をしてください。要するに、作業というものは、時系列に物事は進むわけですから、まず、自分で手作業で、どのようにしたら出来るかやってみてください。コントロールの名称やセル位置など、目でみれば確認できるはずです。 私が、#2と、ここで、いくつか質問を出しているはずですから、そういう内容を無視されたら、同じ結果に終わってしまいます。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 検索した結果を出すのでしたら、ご希望とは違うかもしれませんが、以下のようなコードはいかがでしょうか? シートに コントロールツールから、  リストボックス(ListBox1)  コマンドボタン(CommandButton1)   で、以下のようなコードです。 以下を貼り付けた場合は、一度、VBEditor で、エディタ上部の二つの窓がありますが、 (General) となっている部分の▽ボタンを、CommandButton1 に切り替えて、再認識されてください。ListBox1 も同様です。 以下は、アドレスがListBoxに、表示され、そのアドレスをクリックすると、ジャンプするように出来ています。 'シートモジュール '----------------------------------------------------------------- Private Sub CommandButton1_Click()   Dim sWord As String   Dim c As Range   Dim ws As Variant   Dim FindWord As String   Dim addFirst As String   Const STARTCELL As String = "A1"      If Range(STARTCELL).Value <> "" Then     sWord = Range("A1").Value     Me.ListBox1.Clear   Else     Exit Sub   End If   For Each ws In Worksheets     With ws.UsedRange              Set c = .Find( _       What:=sWord, _       LookIn:=xlValues, _       LookAt:=xlWhole)              If Not c Is Nothing Then         addFirst = c.Address         If FindWord = "" Then           If Me.Name & "!" & c.Address <> c.Parent.Name & "!" & c.Address Then             FindWord = c.Parent.Name & "!" & c.Address(0, 0)           End If         Else           FindWord = FindWord & "," & c.Parent.Name & "!" & c.Address(0, 0)         End If         Do           Set c = .FindNext(c)           If c.Address = addFirst Then Exit Do           FindWord = FindWord & "," & c.Parent.Name & "!" & c.Address(0, 0)         Loop Until c Is Nothing       End If       addFirst = ""     End With   Next ws   Me.ListBox1.List = Split(FindWord, ",") End Sub Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Dim ar As Variant   On Error Resume Next   ar = Split(ListBox1.Text, "!")   Application.Goto Worksheets(ar(0)).Range(ar(1)) End Sub

vivix
質問者

補足

説明がうまくできなくてすみません。 今、ユーザーフォームには、リストボックスが2つと、コマンドボタンが1つあります。1つめのリストボックスに検索の文字をいれます。それで、コマンドボタンを押すと検索結果を2つめのリストボックスに表示させたいと思っています。その検索結果は、アクティブシートだけでなく、9つシートがあるので、同じ文字だと、全てのシートから拾い出して、検索結果の2つ目のシートに入れたいと考えています。 全く初心者で、書き方が分からないので、教えてください。 宜しくお願いいたします。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 どういう目的の内容なのか意味が分からないですね。 例えば、A列に3という数字が入っていて、 同じシートや、他のシートにも、3があれば、 その行番号と列番号と値をリストボックスに表示 行番号・列番号というのは、アドレスのことではありませんか? 値は、3 を探したら、3でしかないのではないかと思います。 検索マクロとは違うのでしょうか? 検索した結果を、リストボックスに出すということでしょうか?

vivix
質問者

お礼

検索した結果をリストボックスに表示するということです。 すみません。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

リストボックスのプロパティにFillListRangeというのがあるから、そこにG1:G10のようにリストしたい、データの入っているセル範囲を入力すればよい(半角で)。エクセルのリストボックス専用のプロパティ項目で、VBにはない。

関連するQ&A