[英]Excel VBA Method 'ClearContents' of Object Range Failed
我看過類似的問題“對象范圍失敗的方法”,但似乎沒有人幫助我解決我的問題。
我收到的錯誤是:“對象范圍失敗的方法'ClearContents'
基本上我想要實現的是,如果BG21的單元格值= 1並且相鄰單元格(BH21)中的字符串長度為0則相鄰單元格(BH21)的時間戳。 理想情況下,我想重復一下Range(BG21:BG35)。 我知道我可以為每個方法使用a但我想先清除此錯誤。
我不想使用單元格公式,因為在單元格BG21更改為1時我需要時間戳。如果我使用單元格公式,那么只要打開工作簿,時間戳就會更改。
我的代碼是:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wb As Workbook, ws As Worksheet
Set wb = ThisWorkbook
Set ws = wb.Worksheets("Submittal Kickoff Meeting")
If (ws.Range("$BG$21").Value = 1 And len(ws.Range("$BH$21").Value) = 0 And Target.Address = ws.Range("$BG$21")) Then
ws.Range("$BH$21").Value = Format(Now(), "m/dd/yyyy hh:mm:ss AM/PM")
Else
ws.Range("$BH$21").ClearContents '<--- Error occurs here
End If
End Sub
錯誤發生在線:
ws.Range("$BH$21").ClearContents
我也嘗試過:
ws.Range("$BH$21").Value = ""
但我收到了相同的錯誤代碼
任何建議?
。
我無法得到錯誤,但是你的代碼中有兩件事你做錯了。
Target.Address = ws.Range("$BG$21")
Range
默認屬性是Value
,因此您在此處將Address與Value進行比較。 ws.Range("$BH$21").ClearContents
將導致無限循環,因為此代碼更改工作表,因此發生Change
事件並再次啟動宏。 使用EnableEvents
可以避免這種情況。
Application.EnableEvents = False ws.Range("$BH$21").ClearContents Application.EnableEvents = True
由於您在更改BH21的值時編輯文件,因此您可以循環通過無限循環。 你將需要另一個if或其他東西來避免無限循環。 我的編輯單元格空白,工作得很好。
你也應該改變你的if語句
Target.Address = ws.Range("$BG$21")
至
Target.Address = "$BG$21"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.