VBA边界错误 - 记录器不工作的确切代码

时间:2015-06-16 12:29:05

标签: excel-vba border vba excel

我知道宏录制器会生成非常低效的代码,所以我只是为了获得我不熟悉的某些属性(例如边框!)的正确语法而使用它。

我试图完成的任务相当简单 - 我试图根据用户输入突出显示(并取消突出显示)一个范围。

但是,我遇到了以下问题:宏录制器使用的代码无法重复!如果我将所有内容都恢复到运行之前的状态,请选择适当的范围(因为宏录制器会广泛使用选择。),并运行宏会引发编译错误:找不到方法或数据成员。

代码:

Sub Macro3()
'
' Macro3 Macro
'

'
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ThemeColor = 2
        .TintAndShade = 0.249946592608417
        .Weight = xlHairline
    End With
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ThemeColor = 2
        .TintAndShade = 0.249946592608417
        .Weight = xlHairline
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ThemeColor = 2
        .TintAndShade = 0.249946592608417
        .Weight = xlHairline
    End With
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
End Sub

1 个答案:

答案 0 :(得分:0)

我想这不是我问题的严格答案,而是解决我的问题。

正如上一篇评论所述,我怀疑这个错误与已经存在的已有边界有关。也许宏根本无法以记录它的特定方式找到它们。

我没有使用宏来尝试动态更改边框(因为它不是添加或删除单个边框的简单问题),我决定使用不同的方法:< / p>

我将使用常规表格式(带边框!)作为默认值。然后,我将简单地使用连接到开关的条件格式,而不是使用宏来突出显示特定的单元格组(围绕外部黄色边框)。因此,VBA只会控制开关,内置的条件格式化将完成剩下的工作 - 这样就容易多了!