VBAでコードの編集が上手くいきません
先日、ご回答頂いたコードを元に自分でいじっているのですが上手く行きません
自分が変更したコード
シート1→シート名:変更箇所
Private Sub worksheet_change(ByVal Target As Excel.Range)
If Target.Address <> "$C$40" Then Exit Sub
If Target = "" Then Worksheets("リスト").AutoFilterMode = False: Exit Sub
Worksheets("リスト").Range("A:C").AutoFilter field:=1, Criteria1:=Target.Value
If Target.Address <> "$C$42" Then Exit Sub
If Target = "" Then Worksheets("リスト").AutoFilterMode = False: Exit Sub
Worksheets("リスト").Range("A:C").AutoFilter field:=1, Criteria1:=Target.Value
If Target.Address <> "$C$44" Then Exit Sub
If Target = "" Then Worksheets("リスト").AutoFilterMode = False: Exit Sub
Worksheets("リスト").Range("A:C").AutoFilter field:=1, Criteria1:=Target.Value
End Sub
シート2→シート名:リスト
Private Sub worksheet_change(ByVal Target As Excel.Range)
Dim i As Long, c As Long
Dim h As Range, ha As Range
Dim myDic As Object
Set ha = Application.Intersect(Target, Range("A:C"))
If ha Is Nothing Then Exit Sub
Set ha = Application.Intersect(ha.EntireColumn, Range("1:1"))
For Each h In ha
Set myDic = CreateObject("Scripting.Dictionary")
If h.Column = 1 Then c = 3 'A列→C列
If h.Column = 2 Then c = 4 'B列→D列
If h.Column = 3 Then c = 6 'C列→F列
On Error Resume Next
For i = 2 To Cells.SpecialCells(xlCellTypeLastCell).Row
If Cells(i, h.Column) <> "" Then
myDic.Add Cells(i, h.Column).Value, Cells(i, h.Column).Value
End If
Next i
With Worksheets("変更箇所").Cells(40, c).EntireColumn.Validation
.Delete
.Add Type:=xlValidateList, Formula1:=Join(myDic.keys, ",")
End With
Set myDic = Nothing
Next
End Sub
シート1において$C$40または$C$42または$C$44のいずれかを変更した場合
最後に変更したセルに対し、シート2にオートフィルタ―がかかる様にしたいと思っています。
試しにシート1を以下のように編集したところ、思った動作を行ったのですが
$C$40または$C$42または$C$44のいずれかのセルを空白にすると
エラーがでてしまいます。
Private Sub worksheet_change(ByVal Target As Excel.Range)
If Target = "" Then Worksheets("リスト").AutoFilterMode = False: Exit Sub
Worksheets("リスト").Range("A:C").AutoFilter field:=1, Criteria1:=Target.Value
If Target = "" Then Worksheets("リスト").AutoFilterMode = False: Exit Sub
Worksheets("リスト").Range("A:C").AutoFilter field:=1, Criteria1:=Target.Value
If Target = "" Then Worksheets("リスト").AutoFilterMode = False: Exit Sub
Worksheets("リスト").Range("A:C").AutoFilter field:=1, Criteria1:=Target.Value
End Sub
Then Exit Subをどう編集すれば上手く動作するでしょうか?
お礼
できました!完璧です!ご回答りがとうございました!