みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル VBA リストについて

エクセル VBA リストについて
ComboBox3が例えばAなら
ComboBox5にリストを入れたい
同じBookにSheet”masuta"がありそこに

U1 V1 W1 X1
A  B C  D
U列の下には”A"があり、Aの項目を入れ込んでいます。
ComboBox3が”A”と表示させた場合
ComboBox5はU列のU3以降の項目が入るようにしたいのですが
Set wbMyBook = Workbooks(strMyBookName)エラー表示され
型の一致がしないと表示されます!
このBookの格納はしているつもりなのですが上手く
回避できません教えて下さい。
それと下の記述をどのように変化させれば良いか
アドバイスお願いします。




Private Const WBHName = "k2.xls"
Private Const SH1Name = "Sheet1"
Private Const wsListName = "masuta"

Dim lngYcnt_List As Long '使用行を格納
Dim wbMyBook As Workbook 'このブックをセット
Dim wsList As Worksheet 'リストシートをセット
Dim strMyBookName As String 'このブックの名前を格納
Private Sub ComboBox3_Change()
Dim lng As Long
'使用するブックとシートをセット
Set wbMyBook = Workbooks(strMyBookName)
Set wsList = wbMyBook.Worksheets(wsListName)

'リストシートの使用行を格納
lngYcnt_List = wsList.Range("masuta!U1:X1").CurrentRegion.Rows.Count


'コンボボックスComboBox1のクリア・フラグをfalseにする。
ComboBox5.Clear
flag = False
'同じ数字のもののコンボボックスComboBox1に追加。
For lng = 1 To lngYcnt_List
If ComboBox3.Value = wsList.Cells(lng, 21) Then
'ComboBox1,TextBox8,呼吸具体策に表示する。
ComboBox5.AddItem wsList.Cells(lng, 21)
End If

If ComboBox3.Value = wsList.Cells(lng, 22) Then
ComboBox5.AddItem wsList.Cells(lng, 22)
End If

If ComboBox3.Value = wsList.Cells(lng, 23) Then
ComboBox5.AddItem wsList.Cells(lng, 23)


'処理を抜けるExit For

flag = True
End If
Next lng

End Sub

投稿日時 - 2010-08-14 23:07:01

QNo.6109874

すぐに回答ほしいです

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

コードと内容のバランスがあっていません。ご自分のコードでしょうか。

こういう作り込み方をして、バンザイしてしまうと、本来、回答者側としては、手をつけられせません。(熱心な人が手伝ってくれるとは思いますが)こういう時は、掲示板の回答者に、最初からゲタを渡したほうがよいです。書かれたマクロは、とても使える状態とは思えませんので、一応、保留です。

一応エラーの原因は、
>Set wbMyBook = Workbooks(strMyBookName)エラー表示され
strMyBookNameは、設定されていません。
それ以上は、言っても無駄になってしまいます。

もちろん、#1さんのアドバイスで出来るなら、こちらの話は無視して構いません。でも、出来るなら、質問者さんだけでなく、回答者側も納得させるもののほうがよいのではないかと思います。そんなに、簡単に解決出来るような内容ではないと思います。

//
最初の要望。

>U1 V1 W1 X1
>A  B C  D
>U列の下には”A"があり、Aの項目を入れ込んでいます。
>ComboBox3が”A”と表示させた場合
>ComboBox5はU列のU3以降の項目が入るようにしたいのですが

マクロ側のコードとは食い違いがあるようですから、無視しますが、このままでは、ComboBox3 を動かすたびに、ComboBox5 の中身をClear していますから、ComboBox5 がひとつしか入らないです。ComboBox5 の意味がありません。

ComboBox3 の内容が、A,B,C,D,E,F,G,H,I,J と、それぞれになった時に、ComboBox5 は、どのようになるのですか?

もしかしたら、ComboBox3 を選んだ時に、ComboBox5 のリストの内容が変わるのではありませんか?
ComboBox3 が、A の時は、ComboBox5 [あいうえお]
ComboBox3 が、B の時は、ComboBox5 [かきくけこ]
ComboBox3 が、C の時は、ComboBox5 [さしすせそ]

ということでしょうか。

>ComboBox1,TextBox8,呼吸具体策に表示する。
一体どういう意味なのか、疑問の残る所ばかりです。

投稿日時 - 2010-08-16 19:29:41

お礼

返事遅れてすいません
もう少し繰り返してやってみます。
本当にすいません。

確かに質問内容も悪いですね!!

投稿日時 - 2010-08-29 00:21:18

ANo.2

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

> Set wbMyBook = Workbooks(strMyBookName)エラー表示され
> 型の一致がしないと表示されます!

strMyBookName に ブック名がセットされていないと、このエラーが出ます。
この行の直前に
  Debug.Print strMyBookName
などとして、確認してみましょう。

余談ですが、多くの場合は wbMyBook 変数を使わないでも
ThisWorkbook キーワードを使えばすみますよ。

投稿日時 - 2010-08-15 20:30:38

お礼

返事遅れて本当にすいません!

もう少しお付き合いしてください
色々試してみます。

投稿日時 - 2010-08-29 00:22:34

あなたにオススメの質問