所有!
我正在用
创建一个LinePrivate Const Origin_X = 248.4
Private Const Origin_Y = 248.4
Private Const Width_X = 205.2
Private Const Height_Y = 205.2
[ ... ]
Dim sh As Shape
X1 = Origin_X
Y1 = Origin_Y
X2 = Origin_X + Width_X
Y2 = Origin_Y + Height_Y
Set sh = ActiveSheet.Shapes.AddLine(X1, Y1, X2, Y2)
sh.Line.EndArrowheadStyle = msoArrowheadTriangle
此行从其原点指向右下角。
现在我希望它指向一些左上角点。但我无法弄清楚该怎么做。显然.Width和.Height属性不允许负值。我已经阅读了有关.Nodes和.Points的内容,但无法让他们进行协作。
行
X1 = Origin_X
Y1 = Origin_Y
X2 = Origin_X - Width_X
Y2 = Origin_Y - Height_Y
Set nd = sh.Nodes(1)
nd.Points(1, 2) = Y1
nd.Points(1, 2) = Y1
nd.Points(2, 1) = X2
nd.Points(2, 2) = Y2
产生超出范围的"指数"尝试分配nd时出现错误消息。 sh.Nodes列表似乎是空的,sh.Nodes.Count是0。
感谢您的帮助。
迈克尔
编辑:这不是很明显,但是:只是翻转或旋转不会有帮助。我需要一种方法来改变从固定原点指向的线到任何方向/长度的任何地方。我可能有x2 / y2或作为替代我可能有/ r(alpha和radius)或其他。
现在我创建一个新行并删除旧行。但这也会导致闪烁和内存问题。
答案 0 :(得分:0)
行有它的开头和结尾,所以交换它们会做
Set sh = ActiveSheet.Shapes.AddLine(X2, Y2, X1, Y1)
sh.Line.EndArrowheadStyle = msoArrowheadTriangle