VBA 运行- 运行完美的例程中的时间错误“1004”

VBA Run-time error '1004' in a routine that has worked flawlessly

我有一个受保护的表单,可以将用户输入的内容从打开的单元格组织到另一个 excel sheet 并通过电子邮件发送给特定的人。这种形式多年来一直完美无缺,但昨天突然抛出 运行 时间错误“1004”:应用程序定义或对象定义的错误。当我在表单中输入任何内容时,错误立即出现,调试器突出显示以下代码行。

Range("AL6").Font.Color = vbWhite

在用户添加信息的表单上,对用户开放的单元格范围从 AF6-AK6 和自动填充明天的日期。 AL6 在这之外并受到保护。单元格 'AL6' 中没有任何内容,也不应该有。这是错误所在的代码块。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
       If Time > 15 / 24 And Range("AF6") = Application.WorksheetFunction.WorkDay(Date, 0) Then
           Range("AL6").Font.Color = vbRed
       Else
           Range("AL6").Font.Color = vbWhite
       End If

 End Sub

表格也定期保存,所以我不认为这是自我复制和损坏的问题。我也不能排除这种可能性。有什么想法吗?

该问题似乎与 sheet 保护有关。

您可以将单元格 "AL6" 设置为 locked = false,或者您可以使用 Workbook_Open 事件仅应用用户界面锁定,这将允许 VBA 到 运行 好像解锁了:

例如:

Private Sub Workbook_Open()

    Thisworkbook.sheets("<put your sheet name here>").Protect "Password", UserInterfaceOnly := True

End Sub

有关 UserInterfaceOnly 的更多信息:Protecting cells in Excel but allow these to be modified by VBA script