Case文による選択肢をさらにあるセルの条件によって分けたい。
EXCEL VBAについての質問です。
初心者です。宜しくお願い致します。
使用環境はWindows 2000 service pack4
Excel 2000.
=質問=
現在、以下のようなプログラムを記しています。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
If .Address = "$D$11" Then
With UserForm1
.ListBox1.List = Array("abc", "def","ghi")
.Show (0)
End With
ElseIf .Address = "$D$12" Then
With UserForm2
Select Case Range("$D$11")
Case "abc"
.ListBox1.List = Array("あ", "い","
う", "え", "お")
Case "def"
.ListBox1.List = Array("A, "B","C", "D")
Case "ghi"
.ListBox1.List = Array("いろ", "はに", "ほへ", "とち")
End Select
.Show (0)
End With
End If
End With
これはセルD11をクリックするとユーザーフォーム1(リストボックス1)が現れ"abc,def,ghi"が選択でき、その選択内容によってセルD12の内容が変化するといったものです。
この応用としてD11の選択肢に加えセルA1の内容(例えば1,2,3)の選択内容によってD12に表示される選択肢をさらに細分化したい。
例えばセルD11で"ghi"を選択する。
上記のプログラムそのままではセルD12をクリックした時に
("いろ", "はに", "ほへ", "とち")が選択肢としてユーザーフォーム2(リストボックス2)に表示されます。
それをセルA1の表示が"1"の時にセルD12をクリックしたら("いろ", "はに")、セルA1の表示が"2"にセルD12をクリックしたら("ほへ", "とち")
セルA1の表示が"3"の時にセルD12をクリックしたら選択肢なしという風に分けたい。
Case "ghi"から以下にif文などを挿入し作成してみましたが、うまく作動しませんでした・・・
上記、質問に対し、どのようにプログラムを変更すればよいがご教授いただくようお願い致します。
補足
当初ユーザーフォーム1のみだったので Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target, Range("o3")) Is Nothing Then Exit Sub UserForm1.Show End Sub としていたんです。今でもこれだけならフォームが呼び出されます。 もうひとつフォームを増やした為、Select文で呼び出すフォームを分けたのですが、Select文がうまく働いていないようです。 二つのセル以外を選択した場合の命令も必要かと思い、If文を付けたままにしました。必要ないのですね。勉強になりました。 Cancel = True は、BeforeDoubleClickの場合でも試していたので消し忘れてました。失礼しました。 教えていただいたSelect文だけにしてみたのですが、やはりフォームが呼び出されません。