[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ComboBoxの連動』(俊)
ComboBox1もしくわComboBox2が変更した時に相手を変更したいのですが
何か良いアイディアはありませんか?
Private Sub ComboBox1_Change()
On Error Resume Next
i = Sheets("コード").Range("e:e").Find(ComboBox1).Row
ComboBox2 = Sheets("コード").Cells(i, 1).Value
End Sub
Private Sub ComboBox2_Change()
On Error Resume Next
i = Sheets("コード").Range("a:A").Find(ComboBox2).Row
ComboBox1 = Sheets("コード").Cells(i, 2).Value
End Sub よろしくお願いします
< 使用 Excel:Excel2003、使用 OS:WindowsXP >
相手 とは 何 ですか? で、その 相手 の 何 を変更するのですか?
(β) 2016/09/24(土) 09:47
ComboBox1 と ComboBox2 、表示しているものは違えど、同じものなんですよね。 だから同期をとろうとしている?
それなら、1つのコンボボックスにしておけばいいんですけど、 コードあるいは名前、いずれでも検索できるようにしておきたいということなんですかね。
コード シートのレイアウトですけど、1行目が(きっと)タイトル行。 2行目からデータで、A列が 商品名、E列が コード。COmboBox1もComboBox2 も内容としては1列だけ。
この理解でOKですか?
それと、最初のリストのセットですけど、具体的にどうしておられますか? それぞれ、単純に RowSource で与えている? あるいは、上から下に AddItem ないしは 1列を Listに格納? それとも、検索しやすいように、並び替えたものをセット?
(β) 2016/09/24(土) 12:19
たとえばの例です。
なお、ComboBoxのイベントをClickイベントにしてあります。 もし、直接入力して指定する場合もあるということなら変更します。 (でも、Changeイベントは適したものではないと思いますので Exit系のイベントで)
15:53 Initialize を変更しました。
Private Sub UserForm_Initialize() Dim lst As Range
With Sheets("コード").Range("A1").CurrentRegion Set lst = .Resize(.Rows.Count - 1).Offset(1) End With With ComboBox1 .RowSource = lst.Columns("A").Address(External:=True) .ColumnHeads = True End With With ComboBox2 .RowSource = lst.Columns("E").Address(External:=True) .ColumnHeads = True End With End Sub
Private Sub ComboBox1_Click() ComboBox2.ListIndex = ComboBox1.ListIndex End Sub
Private Sub ComboBox2_Click() ComboBox1.ListIndex = ComboBox2.ListIndex End Sub
(β) 2016/09/24(土) 15:49
Private Sub ComboBox2_Change()
ComboBox1.ListIndex = ComboBox2.ListIndex End Sub 本当にありがとうございました
(俊) 2016/09/24(土) 17:07
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.