• ベストアンサー

EXCELのVBAでリストボックスに関して質問させていただきます。

EXCELのVBAでリストボックスに関して質問させていただきます。 UserForm上にListBox1とListBox2を横並びに並べてあります。 ListBox1とListBox2に表示されているデータの行数は同じです。 この時、ListBox1のスライドバーを動かすとListBox2も同時に動くようにしたいのですが可能でしょうか?

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

  • ベストアンサー
  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

VBA でリストボックスはスクロールイベントがありませんので、 Application.OnTime あたりで一定周期毎にチェックして同期 させるのが現実的かと思います。 VB6 とか EXE を作るプログラミング言語なら、WM_VSCROLL を捉えたりしますが、VBA でやるにはそれなりの知識+リスク を伴うので除外して考えています。

関連するQ&A

  • エクセルVBA・リストボックスに関する質問です。

    エクセルVBA初心者です。 作成したワークシート名をVBAにてリストボックス内に表示し、それを選択するとそのシートに飛ぶようにしています。 ------------------- Private Sub ListBox1_Change() With ListBox1 Worksheets(.ListIndex + 1).Activate End With End Sub ------------------- Private Sub UserForm_Initialize() Dim wsSheet As Worksheet For Each wsSheet In Worksheets ListBox1.AddItem wsSheet.Name Next wsSheet End Sub ------------------- これではすべてのシートがリストボックス内に反映される為、反映させたくないシート(3シートあるのですが)も一緒に表示されてしまいます。 この表示させたくないシートをリストボックス内に表示させない事は可能でしょうか? 又、できるとしたら、どんな言語を使用すれば良いのでしょうか? ご教授お願い致します。

  • リストボックスの列見出し(ExcelのVBA)

     ExcelのVBAでのリストボックスコントロールについての質問です。  リストボックスの列見出しを作りたいのですが、なかなか上手く行きません。リストボックスに項目を設定するのはExcelのシートから… ----- WorkSheets("Sheet1").ListBox1.ListFillRange = "A1:B2"  ↑(Sheet1のA1:B2のデータをListBox1に追加する場合)↑ ----- のようにするのではなく… ----- Dim MyList(1,1) ~~~(MyList配列にデータを代入) Userform1.ListBox1.Column = Mylist() -----  というように、コードから項目を追加しています。  そこで、列見出しを追加したいと思ったのですが… ----- ListBox1.ColumnHeads = True ----- と記述しても、列見出しは真っ白で、その下に項目が表示されるだけです。  列見出し専用の配列を用意しなければならないというような事はあるのでしょうか?  もしあれば、どのように定義すればよいのでしょうか。  ちなみに、用いているExcelの環境は『Microsoft Excel 2004 for Mac (11.5.6)』、VBAの環境は『Microsoft Visual Basic (11.5)』です。  我流で覚えてきたような知識ですので、とても常識的な事を聞いているかもしれないですが、回答宜しくお願いします。

  • エクセルVBAのリストボックスについて

    こんにちわ! エクセルVBAのリストボックスの質問です。 現在、エクセル上では時刻データフォーマットが日付データになっているのですが、リストボックスに表示させると数値データになってしまいます。 具体的には エクセル上⇒11:00 リストボックス上⇒0.45833… となってしまいます。 どうしたら直るのでしょうか? アドバイスの程よろしくお願いいたします。 ちなみにエクセル2003での事象です。

  • フォームのリストボックスに値を表示させたい

    VBA フォームのリストボックスに値を表示させたい A1→aaa A2→bbb リストボックスに上記の値を表示させたいなら、 Private Sub UserForm_Initialize() UserForm1.ListBox1.RowSource = "Sheet1!A1:A2" End Sub で出来ますが、シート上のセルで表示する値を指定するのではなく、VBA上で、リストボックスに表示させる値を指定したいのです。 Private Sub UserForm_Initialize() UserForm1.ListBox1.RowSource = "aaa,bbb" End Sub を実行すると、VBA実行時エラー380になってしまいます。 UserForm1.ListBox1.RowSource = "aaa;bbb" もダメでした。 ご回答よろしくお願いします。

  • EXCEL VBA リストボックスの表示について

    EXCEL VBA リストボックスの表示について Dim rngCell As Range Dim strStr As String Dim strCom As String Dim strId As String UserForm1.ListBox1.Clear strStr = UserForm1.TextBox.text If strStr = "" Then Exit Sub ThisWorkbook.Worksheets("sheet1").Activate For Each rngCell In [a:a] If rngCell.Value Like "*" & strStr & "*" Then If InStr(strCom, rngCell.Value) = 0 Then strCom = rngCell.Offset(0, 5).Value UserForm1.ListBox1.AddItem strCom strCom = "" strId = rngCell.Offset(0, 6).Value UserForm1.ListBox1.AddItem strId strId = "" End If End If Next End Sub 上記のようなコードを作成しました。 キーワードを入力すると決まった行から結果を出力しリストボックスに表示します。 2つの行から結果が出力されるのですがリストボックスの結果表示が上下になってしまいます。 希望としては aaaaa bbbbb と言うように横表示になればと思っています。 &でつなげる方法もありますがリストボックスのColunmWidthsで指定したとおりの間隔で表示させたいと思っています。 どうか助言をお願いいたします。

  • エクセルVBA ユーザーフォームのリストボックス

    エクセルVBAのユーザーフォームのリストボックスについて教えてください。 現在、以下のようにコードがされています。 Private Sub UserForm_Initialize() With UserForm.ListBox1 .AddItem "ABC" .AddItem "DEF" .AddItem "GHI" .ListIndex = 0 End With End Sub Private Sub ListBox1_Click() With ListBox2 .Clear Select Case UserForm.ListBox1.List(ListBox1.ListIndex) Case "ABC" .AddItem "123" .AddItem "456" .AddItem "789" Case "DEF" .AddItem "456" .AddItem "789" Case "GHI" .AddItem "789" End Select .ListIndex = 0 End With End Sub それで、ユーザーフォームを起動した時点で、ListBox1には"ABC"、ListBox2には"789"を選択し、青く色がついている状態にすることは可能でしょうか。 よろしくお願いします。

  • リストボックスについてです。

    リストボックスについてです。 B列をダブルクリックするとリストボックスが立ち上がり、データを選択してB列に表示できるように設定されていますが、困った現象が起こっています。 例えば、sheet1のB10にダブルクリックでリストボックスを表示し、そこから「あいうえお」という名前を表示させて、sheer1編集が終わったとします。 次のsheet2でB1をダブルクリックしているのに、sheet2のB10に勝手に「あいうえお」と表示されてしまいます。 コードは以下になってます。 VBA初心者なのでエクセルのサイト等からコピペ等して作ったコードです。 どこかおかしな箇所があると思うのですが、何処がおかしいのかがわかりません。 お分かりになる方、教えていただければ助かります。 ' ◆Worksheetのコード◆ '---------------------------------------------------- '選択範囲を変更したときに実行される Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) UserForm1.ListBox1.RowSource = "データ!A1:A100"  '表示するデータ範囲 UserForm1.ListBox1.Font.Size = 12    'フォントサイズ If Target.Column = 2 Then 'B列なら 行 = Target.Row '行番号を取得する UserForm1.Show 'ユーザーフォームを表示する End If End Sub '=================================================================================== ' ◆UserForm1のコード◆ '-------------------------------------------------------------------------- Private Sub ListBox1_Click() 'クリックされたときに実行される If 行 <> 1 Then '1行目でなければ Cells(行, 2) = ListBox1.Value 'リストボックスの値をセルにセットする End If UserForm1.Hide 'ユーザーフォームを非表示にする End Sub Private Sub UserForm_Deactivate() '非アクティブになったときに実行される Unload Me 'ユーザーフォームをメモリから削除する End Sub '========================================================================================= '============================== ' ◆標準モジュールのコード◆ Option Explicit Public 行 As Variant '行番号 Sub auto_open() Load UserForm1 'ユーザーフォームをメモリに読み込む End Sub '==============================

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

    エクセル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 としても何も起こりません。 できればファイルを開いた時からリストボックスに値を表示させるようにしたいです。 ご教授よろしくお願い致します。

  • VBAのリストボックスをマウスでスクロール

    お世話になります excel2007のVBAで UserForm1に ListBox1を配置します 出来たListBoxをマウスでスクロールさせたいのですが 方法を教えていただけますか よろしくお願いします

  • エクセルVBA リストボックスの使い方について・・・

    Private Sub CommandButton1_Click() ListBox1.RowSource = "sheet1!A1:A8" End Sub 上記にあるようにA1~A8にあるデータをリストボックスに表示させたいのです・・・ でも上記方法だと、コマンドボタンをクリックしないと、リストボックスに登録できないですよね・・・ 自分的にはリストボックスが立ち上がった状態ですぐにA1~A8のデータをリストボックス内に表示させたいのですが、そのようなことが出来るのでしょうか? 宜しくお願い致します。

専門家に質問してみよう