все!
Я создаю линию с
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 не допускают отрицательных значений.Я прочитал кое-что о .Node и .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
выдают сообщение об ошибке "index out of range" при попыткеназначить nd.Список sh.Nodes кажется пустым, sh.Nodes.Count равен 0.
Спасибо за любую помощь.
Майкл
edit: Это не было очевидно,но: просто перевернуть или повернуть не поможет.Мне нужен метод для динамического изменения линии, указывающей из фиксированного начала в любое место, в любом направлении / длине.У меня может быть x2 / y2 или как альтернатива, у меня может быть / r (альфа и радиус) или что-то еще.
Прямо сейчас я создаю новую линию и затем удаляю старую.Но это вызывает мерцание и, возможно, проблемы с памятью.