对象范围的Excel VBA方法“ClearContents”失败
我已经看过有关“对象范围方法失败”的类似问题,但似乎没有人帮助我解决问题。
我收到的错误是:“对象范围的方法'ClearContents'失败”
基本上我想要实现的是,如果BG21的单元格值为1,并且相邻单元(BH21)中string的长度为0,则为相邻单元(BH21)添加时间戳。 理想情况下,我想重复这个范围(BG21:BG35)。 我知道我可以使用每种方法,但我想先清除这个错误。
我不想使用单元格公式,因为在单元格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 = ""
但是我收到了相同的错误代码
任何build议?
。
我无法得到这个错误,但是在你的代码中有两件事你犯了错误。
-
Target.Address = ws.Range("$BG$21")
Range
默认属性是Value
,所以你在这里比较Address和Value。 -
ws.Range("$BH$21").ClearContents
将导致无限循环,因为这段代码会改变工作表,所以发生Change
事件,macros再次启动。 使用EnableEvents
来避免这种情况。Application.EnableEvents = False ws.Range("$BH$21").ClearContents Application.EnableEvents = True
由于您在更改BH21的值时编辑了文件,因此会导致无限循环。 你将需要另一个或其他东西来避免无限循环。 我的工作很好,用空白编辑单元格。
你也应该改变你的if语句
Target.Address = ws.Range("$BG$21")
至
Target.Address = "$BG$21"