エクセルVBA ListBox選択を反映させる
いろいろ試みたのですが、分からないので教えてください
・ユーザーフォームにListBox1、ListBox2があります
・やりたいこと
●ListBox1=ListBox2場合、A2にListBox1の値を入力
(ex)ListBox1がH8 (1996)、ListBox2がH8 (1996)の場合、A2に「H8」と入力
●ListBox1がListBox2と1年違う場合、A2とA3にその間の期間を入力
(ex)ListBox1がH8 (1996)、ListBox2がH9 (1997)の場合、A2に「H8」、A3に「H9」と入力
●ListBox1がListBox2と2年違う場合、A2とA4にその間の期間を入力
(ex)ListBox1がH8 (1996)、ListBox2がH10 (1998)の場合、A2に「H8」、A3に「H9」、A4に「H10」と入力
・作成したもの1
Private Sub ListBox1_Change()
With ListBox2
.Clear
Select Case UserForm1.ListBox1.List(ListBox1.ListIndex)
Case "H8 (1996)"
.List = Array("H8 (1996)", "H9 (1997)", "H10 (1998)")
Case "H9 (1997)"
.List = Array("H9 (1997)", "H10 (1998)")
Case "H10 (1998)"
.List = Array("H10 (1998)")
End Select
.ListIndex = 0
End With
End Sub
・作成したもの2
If Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) = Mid(ListBox2, Application.Find("(", ListBox2) + 1, 4) Then
sheets1.Cells(Rows.Count, 1).End(xlUp).Offset(1) = "H" & Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) - 1988
End If
If Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) + 1 = Mid(ListBox2,
Application.Find("(", ListBox2) + 1, 4) Then
sheets1.Cells(Rows.Count, 1).End(xlUp).Offset(1) = "H" & Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) - 1988
sheets1.Cells(Rows.Count, 1).End(xlUp).Offset(1) = "H" & Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) - 1987
End If
If Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) + 2 = Mid(ListBox2, Application.Find("(", ListBox2) + 1, 4) Then
sheets1.Cells(Rows.Count, 1).End(xlUp).Offset(1) = "H" & Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) - 1988
sheets1.Cells(Rows.Count, 1).End(xlUp).Offset(1) = "H" & Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) - 1987
sheets1.Cells(Rows.Count, 1).End(xlUp).Offset(1) = "H" & Mid(ListBox1, Application.Find("(", ListBox1) + 1, 4) - 1986
End If
・困ったこと
(1)
ListBox1を選択した時、ListBox2の表示を切り替えられるようにしており、選択したように青になっていますが、実際はListBox2を選択していないようです
ListBox1をH8にクリックしてから、ListBox2をH9やH10を選択して、再度H8を選択しなおさなければ、エラーになってしまいます
(2)ListBox1とListBox2が1年違い、2年違いの場合、うまくいかずセルに入力されない
もし分かる方がいらっしゃいましたら、教えてください
よろしくお願いします
お礼
早速の回答有難うございました。 無事出来ました。