对象范围的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议?

我无法得到这个错误,但是在你的代码中有两件事你犯了错误。

  1. Target.Address = ws.Range("$BG$21") Range默认属性是Value ,所以你在这里比较Address和Value。
  2. 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"