我知道宏录制器会生成非常低效的代码,所以我只是为了获得我不熟悉的某些属性(例如边框!)的正确语法而使用它。
我试图完成的任务相当简单 - 我试图根据用户输入突出显示(并取消突出显示)一个范围。
但是,我遇到了以下问题:宏录制器使用的代码无法重复!如果我将所有内容都恢复到运行之前的状态,请选择适当的范围(因为宏录制器会广泛使用选择。),并运行宏会引发编译错误:找不到方法或数据成员。
代码:
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
答案 0 :(得分:0)
我想这不是我问题的严格答案,而是解决我的问题。
正如上一篇评论所述,我怀疑这个错误与已经存在的已有边界有关。也许宏根本无法以记录它的特定方式找到它们。
我没有使用宏来尝试动态更改边框(因为它不是添加或删除单个边框的简单问题),我决定使用不同的方法:< / p>
我将使用常规表格式(带边框!)作为默认值。然后,我将简单地使用连接到开关的条件格式,而不是使用宏来突出显示特定的单元格组(围绕外部黄色边框)。因此,VBA只会控制开关,内置的条件格式化将完成剩下的工作 - 这样就容易多了!