我想運行一個選擇案例,當一個單元格在某個範圍內更改,以便在輸入特定文本時運行宏。對於「F50」,我已經爲單個單元(和後面的代碼)工作,但是當我嘗試在幾行後使用相同樣式的代碼時,它不起作用。VBA選擇案例運行時錯誤13
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。當輸入該值時,該案例將檢查運行哪個宏。 這些宏在另一個工作表上覆制一個範圍,並將其粘貼到剛剛觸發宏的單元格(其中還包括右側和下方的幾個單元格),而且這些宏在我手動觸發它們時運行良好。
我去了複製/粘貼路線,因爲我放棄了計劃A,試圖合併剛剛接收到新值的單元格與其下面的1或3,然後將文本輸入到單元格右側。如果我應該回到嘗試這條路線,我很樂意嘗試並避免複製和粘貼。
'範圍(「F4:F45」)'是測試的情況,但不會返回一個字符串 - 這正是您要測試的對象。如果您在該塊中添加了「Case Else:Debug.Assert False」,代碼將停止,您將看到。 –
這是因爲您需要禁用事件並在某處添加一個'DoEvents' - 我假設您正在調用的子工具在某個時間點更改工作表,因此代碼會調用它自己 - 導致無限循環,從而導致Excel崩潰。使用事件觸發器的常見缺陷。 –
感謝您的幫助!我嘗試了宏人的解決方案,但它使Excel崩潰。我也試過R3UK的解決方案,但它返回了一個運行時錯誤。我編輯了操作系統,以澄清宏在發生什麼 –