Профессиональные приемы работы в Microsoft Excel

Пожалуйста, войдите или зарегистрируйтесь.


Расширенный поиск  

Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Автор Тема: в переменную выделенный Shape  (Прочитано 534 раз)

0 Пользователей и 1 Гость просматривают эту тему.

GWolf

  • Старожил
  • ****
  • Уважение: +50/-0
  • Оффлайн Оффлайн
  • Сообщений: 961

С наступающим Новым годом, друзья!
Всем добра и здоровья!
Есть задача: На листе, находится Круг, созданный через Панель рисования. Я его выделяю мышкой и ... хотелось бы, чтобы этот объект передавался в переменную.
Но, не получается. Может кто знает, как это сделать?
Записан
Путей к вершине - множество. Этот один из многих!

GWolf

  • Старожил
  • ****
  • Уважение: +50/-0
  • Оффлайн Оффлайн
  • Сообщений: 961
Re: в переменную выделенный Shape
« Ответ #1 : 01.01.2022, 15:07:56 »

Теперь уже с Наступившим!
Решил задачу вот так:    Dim s1 As Object
    Set s1 = ActiveWindow.Selection.ShapeRange

ну т.е.: Sub test()
    Dim s1 As Object
    Dim zn%
   
    '==================
    '
    'вот сюда нужно бы организовать проверку на выделено или
    'не выделено что либо на листе из Shape - объектов
    'И если ничего не выделено, то и Exit Sub
    '
    '==================

    Set s1 = ActiveWindow.Selection.ShapeRange

    With s1
        MsgBox "Выделен рисованый объект:" & Chr(10) & _
               " - имя: " & .Name & Chr(10) & _
               " - надпись: " & .TextEffect.Text & Chr(10) & _
               " - тип объекта: " & .Type & Chr(10) & _
               "Размещение:" & Chr(10) & _
               "  - вниз = " & .Top & Chr(10) & _
               "  - в право = " & .Left & Chr(10) & _
               "Размеры объекта:" & Chr(10) & _
               "    - высота = " & .Height & Chr(10) & _
               "    - длина = " & .Width, vbInformation + vbOKOnly, ""
    End With
   
    zn = CInt(InputBox(Prompt:="Я могу Повернуть объект." & Chr(10) & _
                               "Укажите градус поворота: ", Title:="", Default:="0"))
    If zn = 0 Then
        Exit Sub
    Else
        s1.Rotation = zn
    End If
End Sub
но, есть еще вопрос: если ни одна фигура не выбрана - выдает ошибку.
Как решить, пока не знаю. Может кто подскажет?
« Последнее редактирование: 01.01.2022, 15:16:20 от GWolf »
Записан
Путей к вершине - множество. Этот один из многих!

GWolf

  • Старожил
  • ****
  • Уважение: +50/-0
  • Оффлайн Оффлайн
  • Сообщений: 961
Re: в переменную выделенный Shape
« Ответ #2 : 03.01.2022, 17:14:16 »

Доброго времени суток, друзья!
Нашел я, таки решение:
Sub test()
    '==================
    '
    'вот сюда нужно бы организовать проверку на выделено или
    'не выделено что либо на листе из Shape - объектов
    'И если ничего не выделено, то и Exit Sub
    '
    '==================
    If TypeName(Selection) = "Range" Then MsgBox "Не выбран ни один рисованный объект.", vbCritical + vbOKOnly, "Аварийный выход!": Exit Sub
   
    Dim s1 As Object: Dim zn As Variant
   
    Set s1 = ActiveWindow.Selection.ShapeRange
    ...
проверил, вроде работает.
Записан
Путей к вершине - множество. Этот один из многих!

nilem

  • Постоялец
  • ***
  • Уважение: +69/-0
  • Оффлайн Оффлайн
  • Сообщений: 346
Re: в переменную выделенный Shape
« Ответ #3 : 11.01.2022, 08:13:36 »

или типа такого:
If TypeName(Selection) = "Oval" Then MsgBox "Выбран круг"
Записан

GWolf

  • Старожил
  • ****
  • Уважение: +50/-0
  • Оффлайн Оффлайн
  • Сообщений: 961
Re: в переменную выделенный Shape
« Ответ #4 : 03.02.2022, 21:27:23 »

Доброго времени суток!
Большое спасибо, уважаемый nilem, вы подтвердили мое решение!
Записан
Путей к вершине - множество. Этот один из многих!

boa

  • Глобальный модератор
  • Старожил
  • *****
  • Уважение: +32/-0
  • Оффлайн Оффлайн
  • Сообщений: 597
  • Доброта спасет мир...
Re: в переменную выделенный Shape
« Ответ #5 : 06.02.2022, 02:00:00 »

Привет, Вульф
как вариант, подобраться к рисункам...
 
  Dim oShap As Shapes
  Dim oShapStep1 As Object, oShapStep2 As Shape
  Set oShap = ActiveSheet.Shapes

For Each oShapStep1 In Application.Selection
  For Each oShapStep2 In oShap
      If oShapStep1.Name = oShapStep2.Name Then Stop: MsgBox "объект """ & oShapStep1.Name & """ выделен."
  Next
Next

« Последнее редактирование: 06.02.2022, 02:08:54 от boa »
Записан
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра
 



Темы без ответов

27.05.2022 14:38 конструкция из Shape 279
09.08.2019 14:09 Макрос для заполнения таблиц через форму 5167
18.07.2019 16:02 Рассылка почты из Excel при помощи почтовой программы TheBAT! 4555
07.02.2019 01:36 Как удалить дубликаты из выпадающего связанного списка? 6135
03.03.2018 00:00 Подсчет отработанного времени, за исключением заранее определенных перерывов 3232
23.05.2017 11:20 Копирование данных из одной таблицы в умную таблицу по условию 5050
15.03.2017 15:45 автозамена картинок PowerPoint 3961
11.03.2017 13:43 Изменить нумерацию страниц 3901
07.02.2017 18:43 Блокировка ячеек по наступлению даты 3019
28.08.2016 19:29 Одинаковые заголовки после обновления оглавления 3512





Яндекс цитирования msexcel.ru Яндекс.Метрика

Страница сгенерирована за 0.116 секунд. Запросов: 108.