Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Связать начало фигуры - с другой фигурой, при повороте - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Связать начало фигуры - с другой фигурой, при повороте (Макросы/Sub)
Связать начало фигуры - с другой фигурой, при повороте
cerber412 Дата: Воскресенье, 18.08.2019, 21:08 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый вечер.
Помогите решить задачу.

Имеется макрос, который по идее должен поворачивать фигуру-стрелку по направлению к фигуре "Овал 3".
Это не линия, а именно фигура-стрелка.
В данном макросе - применяется не проведение линии, а рисование фигуры и ее требуемый поворот.

Удалось добиться того, что "конец" стрелки размещается рядом с "Овал 3", но не получается зафиксировать "начало" этой стрелки.
Это "начало стрелки" все время куда-то смещается.

Как рисовать начало стрелки - всегда рядом с фигурой "Овал 2" ?
То есть, чтобы конец данной фигуры-стрелки всегда находился рядом с "Овал 3" (как сейчас) , а начало данной фигуры - всегда находилось бы рядом с "Овал 2"
К сообщению приложен файл: 45685.xls (54.5 Kb)
 
Ответить
СообщениеДобрый вечер.
Помогите решить задачу.

Имеется макрос, который по идее должен поворачивать фигуру-стрелку по направлению к фигуре "Овал 3".
Это не линия, а именно фигура-стрелка.
В данном макросе - применяется не проведение линии, а рисование фигуры и ее требуемый поворот.

Удалось добиться того, что "конец" стрелки размещается рядом с "Овал 3", но не получается зафиксировать "начало" этой стрелки.
Это "начало стрелки" все время куда-то смещается.

Как рисовать начало стрелки - всегда рядом с фигурой "Овал 2" ?
То есть, чтобы конец данной фигуры-стрелки всегда находился рядом с "Овал 3" (как сейчас) , а начало данной фигуры - всегда находилось бы рядом с "Овал 2"

Автор - cerber412
Дата добавления - 18.08.2019 в 21:08
anvg Дата: Понедельник, 19.08.2019, 20:44 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Доброе время суток.
Это "начало стрелки" все время куда-то смещается.
В школе не пробовали учиться? :)
[vba]
Код
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
[/vba]
 
Ответить
СообщениеДоброе время суток.
Это "начало стрелки" все время куда-то смещается.
В школе не пробовали учиться? :)
[vba]
Код
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
[/vba]

Автор - anvg
Дата добавления - 19.08.2019 в 20:44
cerber412 Дата: Понедельник, 19.08.2019, 21:26 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
anvg, вы не поняли вопроса.
Стрелка должна не поворачиваться к фигуре "Овал 3", а поворачиваться и протягиваться до фигуры "Овал 3".

У вас она просто поворачивается, и конец стрелки - не достает до фигуры "Овал 3".

В исходном макросе -конец стрелки как раз достает до фигуры "Овал 3", но вот начало стрелки - постоянно меняет свои координаты при каждом срабатывании.

А я спрашивал - что поменять, чтобы начало этой стрелки всегда было рядом с фигурой "Овал 2" - чтобы решить данную проблему.
(чтобы зафиксировать начало этой стрелки, привязать его к другой фигуре)
 
Ответить
Сообщениеanvg, вы не поняли вопроса.
Стрелка должна не поворачиваться к фигуре "Овал 3", а поворачиваться и протягиваться до фигуры "Овал 3".

У вас она просто поворачивается, и конец стрелки - не достает до фигуры "Овал 3".

В исходном макросе -конец стрелки как раз достает до фигуры "Овал 3", но вот начало стрелки - постоянно меняет свои координаты при каждом срабатывании.

А я спрашивал - что поменять, чтобы начало этой стрелки всегда было рядом с фигурой "Овал 2" - чтобы решить данную проблему.
(чтобы зафиксировать начало этой стрелки, привязать его к другой фигуре)

Автор - cerber412
Дата добавления - 19.08.2019 в 21:26
anvg Дата: Понедельник, 19.08.2019, 21:48 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
вы не поняли вопроса.
Это не удивительно, вы даже и не попытались быть понятным.
Установите для стрелки Rotation = 0. Посмотрите - какой размер нужно изменить - ширину или высоту. Далее, по координатам в моём примере получаете половину требуемого размера (вспомните чему равно расстояние между двумя точками). Определённую ранее ширину или высоту и изменяете до нужно размера с учётом диаметра овала :)
Успехов.


Сообщение отредактировал anvg - Понедельник, 19.08.2019, 21:48
 
Ответить
Сообщение
вы не поняли вопроса.
Это не удивительно, вы даже и не попытались быть понятным.
Установите для стрелки Rotation = 0. Посмотрите - какой размер нужно изменить - ширину или высоту. Далее, по координатам в моём примере получаете половину требуемого размера (вспомните чему равно расстояние между двумя точками). Определённую ранее ширину или высоту и изменяете до нужно размера с учётом диаметра овала :)
Успехов.

Автор - anvg
Дата добавления - 19.08.2019 в 21:48
cerber412 Дата: Понедельник, 19.08.2019, 21:59 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Посмотрите - какой размер нужно изменить - ширину или высоту


А зачем для стрелки ширину менять ?
Ширина у стрелки меняться не должна - только высота.

А в вашем примере - где прикрепление стрелки к координатам фигуры "Овал 2" ?
Там у вас вроде - эта фигура даже не упоминается.
 
Ответить
Сообщение
Посмотрите - какой размер нужно изменить - ширину или высоту


А зачем для стрелки ширину менять ?
Ширина у стрелки меняться не должна - только высота.

А в вашем примере - где прикрепление стрелки к координатам фигуры "Овал 2" ?
Там у вас вроде - эта фигура даже не упоминается.

Автор - cerber412
Дата добавления - 19.08.2019 в 21:59
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Связать начало фигуры - с другой фигурой, при повороте (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!