VBA Select 案例运行时错误 13
VBA Select Case Runtime Error 13
我正在尝试 运行 一个 select 案例,当输入特定文本时单元格在范围内更改为 运行 宏。我在 "F50" 的单个单元格(以及后面的代码)中使用此方法,但是当我在几行之后尝试使用相同样式的代码时,它不起作用。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F50")) Is Nothing Then
Select Case Range("F50")
Case "MPR-9A": Resize9
Case "MPR-8A": Resize8
Case "MPR-6A": Resize6
Case "MPR-3A": Resize3
End Select
End If
If Not Intersect(Target, Range("F4:F45")) Is Nothing Then
Select Case Range("F4:F45")
Case "M-20A": M20A
Case "M-2X20A": M2X20A
Case "M-20A-SP": M20ASP
End Select
End If
End Sub
当我在 F4:F45 范围内的某处放置一个新值时,我正在尝试使用此代码 运行。输入该值时,案例会检查 运行 的宏。
宏在另一个 sheet 上复制一个范围并将其粘贴到刚刚触发宏的单元格(其中还包括右侧和下方的几个单元格),当我触发这些宏时 运行 很好手动。
我选择了 copy/paste 路线,因为我放弃了计划 A,该计划试图将刚刚收到新值的单元格与其下方的 1 或 3 合并,然后在单元格中输入文本只是为了正确的。如果我应该 return 尝试那条路线,我非常乐意尝试避免复制和粘贴。
您可以使用 Range("F4:F45").Cells(1,1)
,它实际上是 F4
个单元格。
但我猜你想测试的 是 Target.Value
,改变的单元格的值:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("F50")) Is Nothing Then
Select Case Range("F50")
Case "MPR-9A": Resize9
Case "MPR-8A": Resize8
Case "MPR-6A": Resize6
Case "MPR-3A": Resize3
End Select
End If
If Not Intersect(Target, Range("F4:F45")) Is Nothing Then
Select Case Target.value
Case "M-20A": M20A
Case "M-2X20A": M2X20A
Case "M-20A-SP": M20ASP
End Select
End If
End Sub
如果您只想检查这些字符串是否存在,请将此用于您的第二个块:
If Not Intersect(Target, Range("F4:F45")) Is Nothing Then
tempStr = Join([TRANSPOSE[F4:F45)]," ")
Select Case True
Case InStr("M-20A", tempStr): M20A
Case InStr("M-2X20A", tempStr): M2X20A
Case InStr("M-20A-SP", tempStr): M20ASP
End Select
End If
如果您想单独检查每个单元格,则必须遍历该范围:
If Not Intersect(Target, Range("F4:F45")) Is Nothing Then
For Each cell In Range("F4:F45").Cells
Select Case cell.Value
Case "M-20A": M20A
Case "M-2X20A": M2X20A
Case "M-20A-SP": M20ASP
End Select
Next
End If
我正在尝试 运行 一个 select 案例,当输入特定文本时单元格在范围内更改为 运行 宏。我在 "F50" 的单个单元格(以及后面的代码)中使用此方法,但是当我在几行之后尝试使用相同样式的代码时,它不起作用。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F50")) Is Nothing Then
Select Case Range("F50")
Case "MPR-9A": Resize9
Case "MPR-8A": Resize8
Case "MPR-6A": Resize6
Case "MPR-3A": Resize3
End Select
End If
If Not Intersect(Target, Range("F4:F45")) Is Nothing Then
Select Case Range("F4:F45")
Case "M-20A": M20A
Case "M-2X20A": M2X20A
Case "M-20A-SP": M20ASP
End Select
End If
End Sub
当我在 F4:F45 范围内的某处放置一个新值时,我正在尝试使用此代码 运行。输入该值时,案例会检查 运行 的宏。 宏在另一个 sheet 上复制一个范围并将其粘贴到刚刚触发宏的单元格(其中还包括右侧和下方的几个单元格),当我触发这些宏时 运行 很好手动。
我选择了 copy/paste 路线,因为我放弃了计划 A,该计划试图将刚刚收到新值的单元格与其下方的 1 或 3 合并,然后在单元格中输入文本只是为了正确的。如果我应该 return 尝试那条路线,我非常乐意尝试避免复制和粘贴。
您可以使用 Range("F4:F45").Cells(1,1)
,它实际上是 F4
个单元格。
但我猜你想测试的 是 Target.Value
,改变的单元格的值:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("F50")) Is Nothing Then
Select Case Range("F50")
Case "MPR-9A": Resize9
Case "MPR-8A": Resize8
Case "MPR-6A": Resize6
Case "MPR-3A": Resize3
End Select
End If
If Not Intersect(Target, Range("F4:F45")) Is Nothing Then
Select Case Target.value
Case "M-20A": M20A
Case "M-2X20A": M2X20A
Case "M-20A-SP": M20ASP
End Select
End If
End Sub
如果您只想检查这些字符串是否存在,请将此用于您的第二个块:
If Not Intersect(Target, Range("F4:F45")) Is Nothing Then
tempStr = Join([TRANSPOSE[F4:F45)]," ")
Select Case True
Case InStr("M-20A", tempStr): M20A
Case InStr("M-2X20A", tempStr): M2X20A
Case InStr("M-20A-SP", tempStr): M20ASP
End Select
End If
如果您想单独检查每个单元格,则必须遍历该范围:
If Not Intersect(Target, Range("F4:F45")) Is Nothing Then
For Each cell In Range("F4:F45").Cells
Select Case cell.Value
Case "M-20A": M20A
Case "M-2X20A": M2X20A
Case "M-20A-SP": M20ASP
End Select
Next
End If