【发布时间】:2015-11-30 15:27:51
【问题描述】:
我正在尝试在某个范围内更改单元格以在输入特定文本时运行宏时运行选择案例。我为“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 范围内的某处放置一个新值时,我试图让这段代码运行。当输入该值时,case 检查要运行的宏。 宏复制另一个工作表上的范围并将其粘贴到刚刚触发宏的单元格(其中还包括右侧和下方的几个单元格),当我手动触发它们时,这些宏运行良好。
我选择了复制/粘贴路线,因为我放弃了计划 A,该计划试图将刚刚收到新值的单元格与其下方的 1 或 3 合并,然后在右侧的单元格中输入文本。如果我应该重新尝试那条路线,我非常乐意尝试避免复制和粘贴。
【问题讨论】:
-
Range("F4:F45")是测试的情况,但这不会返回字符串 - 这是您尝试测试它的内容。如果您在该块中添加Case Else: Debug.Assert False,代码将停止,您会看到。 -
那是因为您需要禁用事件并在某处添加
DoEvents- 我假设您调用的潜艇在某个时候会更改工作表,因此代码会自行调用 - 导致无限循环,这将使 Excel 崩溃。使用事件触发器的常见缺陷。 -
感谢您的帮助!我尝试了 Macro Man 的解决方案,但它使 Excel 崩溃。我也尝试了 R3UK 的解决方案,但它返回了运行时错误。我编辑了 OP 以阐明宏发生了什么
-
@N.Volchko:什么错误号和哪一行 plz?顺便说一句,回复具体答案(或在此评论中使用
@向每个评论最多的一个用户发送通知)