VBAselect案例运行时错误13

我试图运行一个select的情况下,当一个单元格被改变的范围内,当input特定的文本时运行一个macros。 我有一个工作单元(和后面的代码)为“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范围内的某个地方。 当input该值时,该案例将检查运行哪个macros。 macros在另一个工作表上复制一个范围,然后粘贴到刚刚触发macros的单元格中(也包括右侧和下侧的几个单元格),而且这些macros在我手动触发时运行良好。

我放弃了复制/粘贴路由,因为我放弃了计划A,试图合并刚收到新值的单元格,然后在右下方的单元格中input文本。 如果我应该回到尝试这条路线,我很乐意尝试,避免复制和粘贴。

您可以使用Range("F4:F45").Cells(1,1)事实上是F4细胞。

但是我猜想你想testing的是 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 

如果您只想检查这些string的存在,请将其用于第二个块:

 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