VB - повернуть линию вокруг точки - PullRequest
0 голосов
/ 20 октября 2018

Мне нужно повернуть горизонтальную линию вокруг ее конечной точки в VB Excel.Я пробовал различные решения, найденные в интернете, но они не работают хорошо.

Я даю вам несколько фотографий о том, что я хочу сделать:

Это моя строка:точка А (72; 378)точка B (165; 378)

Line to rotate

И я хочу повернуть точку A вокруг точки B, угол поворота является переменным.Например, это поворот на 60 градусов

Example of rotation

Буквы A и B были добавлены после скриншота с помощью фоторедактора

1 Ответ

0 голосов
/ 21 октября 2018

Попробуйте это.

Sub test()
    Dim x As Single, y As Single
    Dim nx As Single, ny As Single, l As Single
    Dim i As Single, ra As Single
    Dim Ws As Worksheet
    Dim shp As Shape

    Set Ws = ActiveSheet
    For Each shp In Ws.Shapes
        If shp.Type = msoLine Then
            shp.Delete
        End If
    Next
    x = 165
    y = 378
    l = 165 - 72
    For i = 90 To 150
        ra = WorksheetFunction.Radians(i)
        nx = x - Sin(ra) * l
        ny = y + Cos(ra) * l
        Set shp = Ws.Shapes.AddLine(x, y, nx, ny)
        With shp
            .Line.EndArrowheadStyle = msoArrowheadTriangle
            .Line.ForeColor.RGB = RGB(255, 0, 0)
            .Line.Weight = 2
        End With
        DoEvents
        Application.Wait Now + (TimeSerial(0, 0, 1) / 2)
        shp.Delete

    Next i
    Set shp = Ws.Shapes.AddLine(x, y, nx, ny)
    With shp
        .Line.EndArrowheadStyle = msoArrowheadTriangle
        .Line.ForeColor.RGB = RGB(255, 0, 0)
        .Line.Weight = 2
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...