【问题标题】:Worksheets Collection Not Set未设置工作表集合
【发布时间】:2022-12-09 01:42:30
【问题描述】:

我正在尝试更改工作簿中每个工作表顶行的颜色,但是,出现错误:

这是我的代码:

Private Sub UpdateEnvironmentColor(MyVar As String)
    Dim CurrWrkSht As Worksheet
    
    For Each CurrWrkSht In ThisWorkbook.Worksheets
        If MyVar = "A" Then
            CurrWrkSht.Rows(1).Interior.Color = vbRed
        ElseIf MyVar = "B" Then
            CurrWrkSht.Rows(1).Interior.Color = vbGreen
        Else
            CurrWrkSht.Rows(1).Interior.Color = vbWhite
        End If
    Next CurrWrkSht
End Sub

令人费解的是,它运行良好,直到我打开了该工作簿的先前版本……但随后我重新启动了所有内容(包括我的计算机),但无济于事。

在我的 Locals 面板中查看“CurrWrkSht”时,它们对我来说都很好(例如 Name 属性是我期望的名称等)期望这组属性(不确定这是否重要):

我的 VBE 有点挑剔,但至少有一次,当我将鼠标悬停在“ThisWorkbook.Worksheets”上时,我得到了一个工具提示,提到了同样的错误。

我试过只给一个单元格上色,但这也不起作用。不确定到底是什么问题。任何帮助表示赞赏!

【问题讨论】:

  • 发布的方法(代码)看起来不错。我只会将参数更改为 ByVal MyVar As String。你能分享你调用这个过程的代码吗?

标签: excel vba


【解决方案1】:

经过大量实验,并从比我拥有更多 VBA 经验的人那里获得帮助,看起来问题出在工作簿上。开发这个的人将它们全部锁定,所以当我们调用取消保护所有工作表时,这按预期工作。

令人困惑的部分是有时它会起作用,而其他时候则不会。在进行故障排除时,这让我相信权限不是问题,但现在回想起来,这是有道理的,因为可以在各种情况下调用 unprotect 方法,从而使我的方法得以通过。

宝贵的一课!

【讨论】:

    猜你喜欢
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    相关资源
    最近更新 更多