我可以使用以下代码控制 Excel VBA 中图表的重量:
ActiveChart.Axes(xlCategory).Select
With Selection.Border
.ColorIndex = 57
.Weight = xlMedium
.LineStyle = xlContinuous
End With
当我尝试在 Word VBA 中运行时,我收到错误
编译错误: 找不到方法或数据成员。
突出显示.Border 。
我试验了代码
salesChart.Axes(xlCategory).Select
Selection.Borders(wdBorderBottom).Visible = True
并收到消息
运行时错误'4605' 此方法或属性不可用,因为对象引用绘图对象。
我想找出一种方法来突出显示我通过Word VBA嵌入MS Word文档的图形中的轴
答案 0 :(得分:0)
我现在看到一些事情,我更仔细地看待这一点。第一个代码段是 Excel 代码,这不会运行,无法在Word中运行,实际上它会引发编译错误。
当我尝试在Word VBA中运行它时,我收到错误
ActiveChart.Axes(xlCategory).Select
With Selection.Border
.ColorIndex = 57
.Weight = xlMedium
.LineStyle = xlContinuous
End With
编译器突出显示.Border
,因为Word中的Border
对象没有Selection
属性。
Selection
对象有点含糊不清because it can be different things。可以把它想象成一个变量,它指的是所选择的任何东西或光标点,如果没有选择任何东西。
这样就解释了method or data member not found
不是运行时错误,而是编译错误,表明您的代码不能按原样执行。
如果您将Select
和Selection
替换为对象本身,请执行以下操作:
With ActiveChart.Axes(xlCategory).Border
.ColorIndex = 57
.Weight = xlMedium
.LineStyle = xlContinuous
End With
您将收到另一个错误,因为Word中没有ActiveChart
这样的东西,只有Excel对象。 (使用Option Explicit
会提醒您这个问题)。简而言之,您需要参考形状或图表,并且您可以使用变量来处理形状上的句柄。尝试:
With salesChart.Axes(xlCategory).Border
.ColorIndex = 57
.Weight = xlMedium
.LineStyle = xlContinuous
End With
这可能有用:
How to avoid using Select in Excel VBA macros
虽然专门为Excel编写,但这是一个更好的编程概念:Select
是做大多数事情的粗略方式,虽然有一些例外,但几乎所有可以用VBA完成的事情都可以更高效地完成通过直接使用对象,而不是先选择,然后对选择进行操作 - 这是多余的。它也很混乱,因为你需要经常选择事物,你的代码必然含糊不清,指的是模糊Selection
对象(变体)而不是强类型对象等。