改变形状" Line"创建后开始/结束

时间:2018-06-05 12:38:33

标签: excel vba line

所有!

我正在用

创建一个Line
Private 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)或其他。

现在我创建一个新行并删除旧行。但这也会导致闪烁和内存问题。

1 个答案:

答案 0 :(得分:0)

行有它的开头和结尾,所以交换它们会做

Set sh = ActiveSheet.Shapes.AddLine(X2, Y2, X1, Y1)
sh.Line.EndArrowheadStyle = msoArrowheadTriangle