プロが教えるわが家の防犯対策術!

エクセルVBA 別シートからのコンボボックス連動について

Book1(多人数入力用ブック)
・入力シート
・データ用シート

Book2(反映用ブック)
・シート1

Book1にコンボボックスが2列 テキストボックスが2列 * 6行のユーザーフォームを作成しました。

コンボボックス1 コンボボックス2 テキストボックス1 テキストボックス2
コンボボックス3 コンボボックス4 テキストボックス3 テキストボックス4




左のコンボボックスで「あ」が選ばれたときには、右のコンボボックスで「あ行の顧客」・・・というように連動させたいと考えております。

データ用シートのデータは、
  A      B          C
1 あ あ行で始まる顧客 か行で始まる顧客
2 か
3 さ
4 た
5 な
6

Private Sub UserForm_Initialize()
Dim c As Range
ComboBox1.RowSource = "データ用シート!A1:A9"
End Sub

Private Sub ComboBox1_Change()
'Dim Rng As Range
'Dim i As Long

i = ComboBox1.ListIndex
If i > -1 Then

Dim c As Range
Set Sh = Worksheets("データ用シート")
Set Rng = Worksheets("データ用シート").Range("B2:I30")
ComboBox2.Value = ""
ComboBox2.RowSource = Rng.Columns(i + 1).Address
End If
End Sub

上記コードですと、コンボボックス2が入力シートのデータを表示してしまいうまくいきません。

欲をいえば、
Book1(多人数入力用ブック)入力シートの特定セルに
コンボボックス2・テキストボックス1 コンボボックス4・テキストボックス3というように続けて1セルに反映
Book2(反映用ブック)シート1に
コンボボックス2・テキストボックス1・テキストボックス2 を各1セル 1行に反映させたいと考えております。

まったく知識がないのですが 仕事上どうしても必要となったので、各種サイトを見よう見真似でやっております。
ご助力いただければ幸いです。

A 回答 (2件)

> 上記コードですと、コンボボックス2が入力シートのデータを表示してしまいうまくいきません。


デバッグ用コードを3行追加します。出力をイミディエイトウィンドウで
確認してみて下さい。
>  ComboBox2.RowSource = Rng.Columns(i + 1).Address
  Debug.Print "設定値:" & Rng.Columns(i + 1).Address
  Debug.Print "ComboBox2:" & ComboBox2.RowSource
  Debug.Print "ComboBox1:" & ComboBox1.RowSource

デバッグして確認すればすぐ分かった話ですね。シート名が
指定されていないから Active なシートのセルからデータが
取られているだけです。

> 欲をいえば、
他の Book を開く方法は分かるの?って所から始まり、何ができて
何が分からないのかの説明をして下さい。
現時点では丸投げしてるだけなのでスルー対象ですね。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
御礼が遅くなり申し訳ございませんでした

お礼日時:2011/09/05 12:08

コンボボックス2の設定は、


ComboBox2.RowSource = "データ用シート!" & Rng.Columns(i + 1).Address


他の質問は、具体的に何をどうしたいのか、分かりにくいです。
    • good
    • 1
この回答へのお礼

お礼が遅くなり申し訳ございませんでした。
回答ありがとうございます。
コンボボックス1と2の設定は教えていただいたコードでできました。

お礼日時:2011/09/05 12:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A