使用Range(Cells()Cells())。样式导致应用程序定义或用户定义的错误

时间:2015-06-23 22:19:38

标签: excel vba excel-vba

Curretly如果符合某些标准,我会尝试设计一系列细胞。我能够成功地将一种风格应用于一个单元格,但到目前为止还没有成功将其应用于一个范围。这就是我所知道的:

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。但是,当我更改此代码以尝试将样式应用于范围时,我得到了#34;应用程序定义或用户定义的错误&#34;。这是我尝试将代码更改为:

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知道它究竟在哪里出错。任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:3)

您在第二个代码段中使用了Cells全局对象,但在第一个代码段中明确引用了工作表的.Cells属性。第二个实际上可以正常工作,但前提是活动工作表 匹配 是您从ActiveWorkbook.Sheets()获得的工作表。获取对目标工作表的引用,然后使用 .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