添加条件格式

时间:2017-12-29 14:16:18

标签: excel vba excel-vba conditional-formatting

  

导致"运行时错误' -2147417848'(80010108)'"

我有一些代码可以创建一个新工作簿,导入一些数据,然后添加条件格式。

问题:它不起作用,引用主题行中的错误。问题不在于错误引用的方法,问题是代码实际上没有添加FormatCondition - 这在之后的CF窗口中是可见的 - 所以我试图调用的所有方法总是失败并出现同样的错误。

... 除非我从头开始逐步执​​行代码;在这种情况下,它按预期工作 - FormatCondition正常添加,看不到任何错误,并且CF在工作表上可见,正是我想要它做的。

截图:
enter image description here

相关代码:

Public wb As Workbook, ws As Worksheet

Sub Main()
    Set wb = Workbooks.Add
    Set ws = wb.Worksheets(1)
    ' Populate ws with some data
    Call FixCF(ws)
End Sub

Sub FixCF(ByRef cfWs As Worksheet)
    cfWs.Cells.FormatConditions.Delete

    Debug.Print "Start CF"
    With cfWs.Range("G:G").FormatConditions
        .Add Type:=xlExpression, Formula1:="=(INDIREKTE(ADRESSE(RAD(); 12))=""G"")"
        .Item(1).SetFirstPriority
        .Item(1).Interior.PatternColorIndex = xlAutomatic
        .Item(1).Interior.Color = 14277081
        .Item(1).StopIfTrue = False
    End With
End Sub

我也试过这个变种:

cfWs.Range("G:G").FormatConditions.Add Type:=xlExpression, Formula1:="=(INDIREKTE(ADRESSE(RAD(); 12))=""G"")"
With cfWs.Range("G:G").FormatConditions(1)
    .SetFirstPriority
    .Interior.PatternColorIndex = xlAutomatic
    .Interior.Color = 14277081
    .StopIfTrue = False
End With

这里是宏录制器吐出的代码:

Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
    "=(INDIREKTE(ADRESSE(RAD(); 12))=""G"")"

Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .Color = 5296274
    .TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False

我没有使用我通过谷歌推测的那些通常的罪魁祸首 - ActiveSheetSelection - 我已经尝试了Application.Wait并且DoEvents没有改变行为。我假设它不是腐败工作簿的问题,因为我在宏的每次运行中都创建了一个新的 - 但是我尝试使用相同的代码创建一个全新的工作簿只是为了确定,我得到了同样的错误。我已关闭并重新打开主页#34; (包括整个Excel应用程序)多次 - 仍然没有。

所以我的问题仍然存在:为什么代码只在我单步执行时才有效?

1 个答案:

答案 0 :(得分:0)

当我单步执行代码时它起作用的原因是因为我正在查看表单。在perpetrating子句的顶部添加一个简单的cfWs.Activate可修复所有内容。

@Zac提到,如果您使用工作表的名称而不是其索引,它会起作用。我还没有尝试过,但是我会把它包含在这里给那些发现同样问题的人。

所以看起来课程你不能总是在工作表中添加条件格式,除非它也是活动工作表 - 据我所知,{{3} } doesn't appear