【问题标题】:Using Range(Cells() Cells()).Style results in application defined or user defined error使用 Range(Cells() Cells()).Style 导致应用程序定义或用户定义错误
【发布时间】:2015-06-24 06:42:32
【问题描述】:

目前,如果满足某些条件,我正在尝试设置一系列单元格的样式。我能够成功地将样式应用于一个单元格,但迄今为止未能成功地将其应用于一个范围。以下是我所知道的有效方法:

ElseIf OneA / OneC > 0.8 And OneA / OneC <= 1 Then
      ActiveWorkbook.Sheets(StartYear & " " & StartQ & " - " & EndYear & " " & EndQ).Cells(Employee, StartCol).Style = "60% - Accent2"

上面的代码将单元格 (Employee, StartCol) 设置为 60% - Accent2。但是,当我更改此代码以尝试将样式应用于范围时,我收到“应用程序定义或用户定义错误”。以下是我尝试将代码更改为:

ElseIf OneA / OneC > 0.8 And OneA / OneC <= 1 Then
                    ActiveWorkbook.Sheets(StartYear & " " & StartQ & " - " & EndYear & " " & EndQ).Range(Cells(Employee, StartCol), Cells(Employee + 49, StartCol)).Style = "60% - Accent2"

我不确定我在这里做错了什么。我认为这可能是语法错误,但我对 vba 的经验不足,无法知道它到底哪里出错了。任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您在第二个 sn-p 中使用 Cells 全局对象,但在第一个 sn-p 中明确引用了工作表的 .Cells 属性。第二个实际上可以工作,但前提是活动工作表匹配您从ActiveWorkbook.Sheets() 获得的工作表。获取对目标工作表的引用,然后使用 its .Cells 属性而不是全局:

    ElseIf OneA / OneC > 0.8 And OneA / OneC <= 1 Then
        Dim target As Worksheet
        Set target = ActiveWorkbook.Sheets(StartYear & " " & StartQ & " - " & EndYear & " " & EndQ)
        With target
            .Range(.Cells(Employee, StartCol), .Cells(Employee + 49, StartCol)).Style = "60% - Accent2"
        End With
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      相关资源
      最近更新 更多