Имеется макрос, который по идее должен поворачивать фигуру-стрелку по направлению к фигуре "Овал 3". Это не линия, а именно фигура-стрелка. В данном макросе - применяется не проведение линии, а рисование фигуры и ее требуемый поворот.
Удалось добиться того, что "конец" стрелки размещается рядом с "Овал 3", но не получается зафиксировать "начало" этой стрелки. Это "начало стрелки" все время куда-то смещается.
Как рисовать начало стрелки - всегда рядом с фигурой "Овал 2" ? То есть, чтобы конец данной фигуры-стрелки всегда находился рядом с "Овал 3" (как сейчас) , а начало данной фигуры - всегда находилось бы рядом с "Овал 2"
Добрый вечер. Помогите решить задачу.
Имеется макрос, который по идее должен поворачивать фигуру-стрелку по направлению к фигуре "Овал 3". Это не линия, а именно фигура-стрелка. В данном макросе - применяется не проведение линии, а рисование фигуры и ее требуемый поворот.
Удалось добиться того, что "конец" стрелки размещается рядом с "Овал 3", но не получается зафиксировать "начало" этой стрелки. Это "начало стрелки" все время куда-то смещается.
Как рисовать начало стрелки - всегда рядом с фигурой "Овал 2" ? То есть, чтобы конец данной фигуры-стрелки всегда находился рядом с "Овал 3" (как сейчас) , а начало данной фигуры - всегда находилось бы рядом с "Овал 2"cerber412
Public Sub rotateA() Dim pArrrow As Shape Dim pCirlce As Shape Dim pSheet As Worksheet Dim Xa As Single, Ya As Single Dim Xc As Single, Yc As Single Set pSheet = ActiveSheet Set pArrrow = pSheet.Shapes("Arrow 2") Set pCirlce = pSheet.Shapes("Oval 3") Xa = pArrrow.Left + 0.5 * pArrrow.Width: Ya = pArrrow.Top + 0.5 * pArrrow.Height Xc = pCirlce.Left + 0.5 * pCirlce.Width: Yc = pCirlce.Top + 0.5 * pCirlce.Height pArrrow.Rotation = Application.Degrees(Application.Atan2(Xc - Xa, Yc - Ya)) + 90 End Sub
Public Sub rotateA() Dim pArrrow As Shape Dim pCirlce As Shape Dim pSheet As Worksheet Dim Xa As Single, Ya As Single Dim Xc As Single, Yc As Single Set pSheet = ActiveSheet Set pArrrow = pSheet.Shapes("Arrow 2") Set pCirlce = pSheet.Shapes("Oval 3") Xa = pArrrow.Left + 0.5 * pArrrow.Width: Ya = pArrrow.Top + 0.5 * pArrrow.Height Xc = pCirlce.Left + 0.5 * pCirlce.Width: Yc = pCirlce.Top + 0.5 * pCirlce.Height pArrrow.Rotation = Application.Degrees(Application.Atan2(Xc - Xa, Yc - Ya)) + 90 End Sub
anvg, вы не поняли вопроса. Стрелка должна не поворачиваться к фигуре "Овал 3", а поворачиваться и протягиваться до фигуры "Овал 3".
У вас она просто поворачивается, и конец стрелки - не достает до фигуры "Овал 3".
В исходном макросе -конец стрелки как раз достает до фигуры "Овал 3", но вот начало стрелки - постоянно меняет свои координаты при каждом срабатывании.
А я спрашивал - что поменять, чтобы начало этой стрелки всегда было рядом с фигурой "Овал 2" - чтобы решить данную проблему. (чтобы зафиксировать начало этой стрелки, привязать его к другой фигуре)
anvg, вы не поняли вопроса. Стрелка должна не поворачиваться к фигуре "Овал 3", а поворачиваться и протягиваться до фигуры "Овал 3".
У вас она просто поворачивается, и конец стрелки - не достает до фигуры "Овал 3".
В исходном макросе -конец стрелки как раз достает до фигуры "Овал 3", но вот начало стрелки - постоянно меняет свои координаты при каждом срабатывании.
А я спрашивал - что поменять, чтобы начало этой стрелки всегда было рядом с фигурой "Овал 2" - чтобы решить данную проблему. (чтобы зафиксировать начало этой стрелки, привязать его к другой фигуре)cerber412
Это не удивительно, вы даже и не попытались быть понятным. Установите для стрелки Rotation = 0. Посмотрите - какой размер нужно изменить - ширину или высоту. Далее, по координатам в моём примере получаете половину требуемого размера (вспомните чему равно расстояние между двумя точками). Определённую ранее ширину или высоту и изменяете до нужно размера с учётом диаметра овала Успехов.
Это не удивительно, вы даже и не попытались быть понятным. Установите для стрелки Rotation = 0. Посмотрите - какой размер нужно изменить - ширину или высоту. Далее, по координатам в моём примере получаете половину требуемого размера (вспомните чему равно расстояние между двумя точками). Определённую ранее ширину или высоту и изменяете до нужно размера с учётом диаметра овала Успехов.anvg
Сообщение отредактировал anvg - Понедельник, 19.08.2019, 21:48