[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『コンボボックスの連携』(よしひろ)
「データ」シートにて以下の表を作成しました。 A B C 果物 りんご 100 果物 なし 150 果物 ぶどう 300 野菜 なす 500 野菜 はくさい 200 野菜 かぼちゃ 400 肉類 牛肉 100 肉類 豚肉 300 肉類 鶏肉 200
ユーザーフォームのコンボボックスを2つ、テキストボックスを1つ作りました。
コンボボックス1にてA列のリストを表示
コンボボックス2にてA列から抽出されたリストを表示
それで、このサイトにて教えていただいた構文が以下のものです。
Private Sub ComboBox1_Change()
Dim r As Range
ComboBox2.Clear
With Worksheets("データ")
.AutoFilterMode = False
.Columns("A:C").AutoFilter Field:=2, Criteria1:=ComboBox1.Value
For Each r In .Range("C2:C" & .Range("C65536").End(xlUp).Row). _
SpecialCells(xlCellTypeVisible)
ComboBox2.AddItem r.Value
Next r
.AutoFilterMode = False
End With
End Sub
やりたいことは、このコンボボックス1とコンボボックス2で選択した項目の内容でC列の
データをテキストボックスに表示させたいのです。
例)果物-りんご だと「100」を表示
どのようにすればよろしいでしょうか。
よろしくお願いいたします。
OS:windowsXP excel2003
ComboBox2.AddItem がC列になっていますが? B列としてComboBox2.Valueでもう一度AutoFilter? (DD)
>このサイトにて教えていただいた構文・・・ という事は初めての方へを読まなかったんですか? [初めての方へより抜粋] 掲示板への書き込みやメールには習慣として半角カタカナを使わないということです (´・ω・`)
1) ComboBox2のColumnCountを 2 に設定
2) ComboBox2のColumnWidthを "100;0" (2列目を非表示)
3) ComboBox1のChangeイベントコードのAutofilterの後
For Each r In .Range("b2",.Range("b" & Rows.Count).End(xlUp)).SpecialCells(12)
With Me.ComboBox2
.AddItem
.List(n,0) = r.Value
.List(n,1) = r.Offset(,1).Value
End With
n = n + 1
Next
4) ComboBox2のChangeイベントコードで
With Me.ComboBox2
Me.TextBox1.Text = .List(.ListIndex,1)
End With
かな? (seiya)
どなたか分かりませんが、 半角カタカナについては失礼いたしました。以後気をつけます。 DDさん、seiyaさん、返信どうもありがとうございます。
先の表ですが、間違えておりました。
A列に連番が入って
A B C D
1 果物 りんご 100
2 果物 なし 150
3 果物 ぶどう 300
4 野菜 なす 500
5 野菜 はくさい 200
6 野菜 かぼちゃ 400
7 肉類 牛肉 100
8 肉類 豚肉 300
9 肉類 鶏肉 200
となります。
それで、seiyaさんの構文で記述したところ、1回目は表示されるのですが、
2回目にコンボボックス1を選択したところで、
Me.TextBox1.Text = .List(.ListIndex,1)
のところでエラーが出てしまいます。
一番最初に
ComboBox2.Clear
と記述しているからなのかなと思うのですが、
どのようにエラーを回避すればよいのでしょうか。
できたら選択した項目をコマンドボタンにてセルに記入した後、
コンボボックス2、テキストボックス1の内容を消去させたいのです。
コマンドボタン1にはこのように記述したのですが、
Private Sub CommandButton1_Click()
Range("A31").Value = ComboBox1.Value
Range("d31").Value = ComboBox2.Value
Range("h31").Value = TextBox1.Value
End Sub
この後の記述が分かりません。
よろしくお願いいたします。
(よしひろ)
ComboBox2のChangeイベントの先頭に
If Me.ComboBox2.ListIndex = -1 Then
Me.TextBox1.Text = ""
Exit Sub
End If
で回避してください。
(seiya)
seiya さん、どうもありがとうございます。 おかげさまで思ったとおりのことが出来ました。 本当にこのサイトにはいつも助けられます。 今後とも分からないことがでてきたときはどうかよろしくお願いします。 (よしひろ)
解決してよかったです。 このように「何をどうしたい」がはっきり伝わってくる質問は 解決も早いですね。 (seiya)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.