Как удалить фигуру в excel
Если вы хотите избавиться от автоматических форм в Excel, вы можете найти простой способ быстро удалить все формы, а не удалять автоматические формы по одной. Следующий хитрый метод поможет вам удалить все автофигуры одним щелчком мыши.
- Удалите все автофигуры на активном листе с помощью функции Перейти в Excel
- Удалите все автофигуры на активном листе с помощью VBA
- Удалите все автофигуры на листе или в книге с помощью Kutools for Excel
Удалите все автофигуры на активном листе с помощью функции Перейти в Excel
Удивительный! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Экономьте 50% своего времени и сокращайте тысячи щелчков мышью каждый день!
Если есть только один вид объектов — автофигуры на листе, вы можете удалить все автофигуры с помощью Перейти к функции.
1. Нажмите F5 or Ctrl + G для отображения Перейти к диалоговое окно и щелкните Особый.., см. снимок экрана:

2. Проверьте Объекты, А затем нажмите Ok, он выберет все объекты, см. снимок экрана:

3. Затем нажмите Возврат на одну позицию кнопку, чтобы удалить все автофигуры.
Внимание: Объекты содержат автофигуры, изображения, картинки и т. Д. Применение этого метода приведет к удалению других объектов, кроме автофигур, если на листе есть не только объект автофигур.
Удалите все автофигуры на активном листе с помощью VBA
Использование макроса VBA может помочь вам быстро удалить все автоматические формы на активном листе.
Шаг 1: Удерживайте ALT + F11 ключи, и он открывает Microsoft Visual Basic для приложений окно.
Шаг 2: нажмите Вставить > Модули, и вставьте следующий макрос в Модули окно.
VBA: удалить все фигуры на активном листе.
Sub DeleteShapes ()
Дим Шп как форма
Для каждой детали в ActiveSheet.Shapes
Шп.Удалить
Следующая Шп
End Sub
Шаг 3: нажмите F5 ключ для запуска этого макроса.
Затем вы увидите, что все фигуры на активном листе быстро удаляются.
Заметки:
1. Этот макрос VBA может удалять только все фигуры на активном листе.
2. Этот макрос VBA может удалять все виды фигур на активном листе, включая изображения, клипы, фигуры, SmartArt, диаграммы, текстовые поля и т. Д.
Удалите все автофигуры на листе или в книге с помощью Kutools for Excel
Если вы хотите удалить только автоматические формы с листа, Kutools for Excel‘s Удалить иллюстрации и объект может помочь вам удалить определенные фигуры на активном листе, выбранных листах или всей книге одним щелчком мыши.
Kutools for Excel включает более 300 удобных инструментов Excel. Бесплатная пробная версия без ограничений в течение 30 дней. Получить сейчас.
Шаг 1: нажмите Kutools > Удалить иллюстрации и объект.
Шаг 2: В Удалить инструменты диалоговое окно, пожалуйста, отметьте Авто формы вариант и отметьте один из вариантов в заглянуть раздел. См. Следующий снимок экрана:

- Если вы установите флажок Активный лист опция, он удалит все автоматические формы на активном листе;
- Если вы установите флажок Выбранные листы опция, он удалит все автоматические формы на выбранных листах;
- Если вы установите флажок Все листы вариант, он удалит все автоматические формы во всей книге.
Шаг 3: нажмите OK, он удалит все автоматические формы.
Kutools for Excel’s Удалить инструменты может помочь нам удалить все диаграммы, линии, изображения, автофигуры, умные рисунки, текстовые поля, связанные объекты OLE и встроенные объекты OLE на активном листе, выбранном листе или на всех листах текущей книги. Нажмите, чтобы узнать больше…
Delete all shapes in excel worksheet except form controls
I have an excel worksheet where a macro tied to a button draws dynamic shapes based on the user input parameters in the worksheet.
I am trying to write a new macro to clean the sheet, or in other words delete all shapes in the worksheet.
I tried using the code below, and it indeed deletes all shapes, however button form controls also get deleted in the process. Is there an easy way to only get rid of the shapes (arrows, textboxes, ellipses etc.) in the worksheet? Thanks a bunch.
Excel понятным языком: быстро удалить все картинки с листа

При копировании данных из других файлов или сайтов в таблицу могут попасть скрытые объекты, лишние рисунки, фигуры, диаграммы. Такой мусор, может являться одной из причин большого размера файла, приводить к сильному торможению и долгому сохранению документа.
Чтобы быстро выделить и удалить все с листа, нужно:
На вкладке меню Главная ► Найти и выделить ► Выделить группу ячеек:

В открывшемся окне выбираем вариант Объекты:

Нажимаем ОК.
Нажать клавишу F5, в появившемся окне Переход, нажать кнопку Выделить:

Откроется уже знакомое окно, Выделить группу ячеек, выбираем вариант Объекты, нажимаем OK.
Какой вариант использовать, дело вкуса.
Последний штрих, нажмите DELETE.
Для продвинутых:
Откройте Visual Basic (Alt + F11), копируйте и примените макрос:
Sub DelObject()
For Each i In ActiveSheet.Shapes
i.Delete
Next
End Sub

661 пост 14.8K подписчиков
Правила сообщества
2. Публиковать посты соответствующие тематике сообщества
3. Проявлять уважение к пользователям
4. Не допускается публикация постов с вопросами, ответы на которые легко найти с помощью любого поискового сайта.
По интересующим вопросам можно обратиться к автору поста схожей тематики, либо к пользователям в комментариях
Важно — сообщество призвано помочь, а не постебаться над постами авторов! Помните, не все обладают 100 процентными знаниями и навыками работы с Office. Хотя вы и можете написать, что вы знали об описываемом приёме раньше, пост неинтересный и т.п. и т.д., просьба воздержаться от подобных комментариев, вместо этого предложите способ лучше, либо дополните его своей полезной информацией и вам будут благодарны пользователи.
Утверждения вроде «пост — отстой», это оскорбление автора и будет наказываться баном.
@ExceLifeHack Для того чтобы быстро удалить все картинки с листа Excel надо выделить одну картинку, нажать CTRL+A и Delete. Всё. И никаких танцев с бубном — удалятся только картинки, остальная информация останется на своих местах.
Автор, чё за х. фигню ты людям рассказываешь?
Главная- Найти- выделить.
А просто Ctrl+G нельзя?
А то растет поколение не знающее что такое Ctrl+C & Ctrl+V — думают что только мышкой можно..
Про Ctrl+A выше уже написали
@ExceLifeHack, большое спасибо, помогло)) Я давным давно открыд xlsm файл в LibreOffice и он нагенерил кучу объектов и таблица стала неимоверно зависать, после удаления объектов стало веселее работать, но один фиг надо всё переносить всё в HTML-формат чтобы работало ещё быстрее))

Таблицы в MS Office, МойОфис, Р7 (он же ONLYOFFICE), LibreOffice
Маленькое сравнение работы MS Office, МойОфис, Р7 (он же ONLYOFFICE), LibreOffice.
MS Office 2016. Исходный файл создавался в данной программе
МойОфис Сборка 54 Версия 2.3 Н (надеюсь правильно переписал)
Р7-Офис. Профессиональный (десктопная версия) 7.3.0.159 (x64 exe)
LibreOffice 7.5.3.2 (Х86_64)
Р7-Офис — платный, ONLYOFFICE. Поведение одинаковое.
Оригиналы скринов и тестовый файл на облаке. Файл и скрины будут пополняться по мере моего интереса, но это не точно.
Сравнение работы видно на скринах.
LibreOffice — лучший результат, МойОфис — худший результат

2. Форматирование ячеек
Р7-Офис. — лучший результат, МойОфис — худший результат

3. Построение диаграмм
LibreOffice — лучший результат, МойОфис — худший результат
Р7-Офис — есть проблемы с отображением и редактированием.

LibreOffice — единственный выдал верный результат,
МойОфис — не посчитал, и честно об этом сказал (типа радуйтесь)
Р7-Офис — якобы посчитал, но при смене исходных данных подобен поведению МойОфис

5. Отдельной необъятной (и пока особо не известной) темой стоит программирование под Р7 и МойОфис. Помолчу о встроенных оболочках (о мёртвых или хорошо или ничего. Редактор VBA это верх совершенства по сравнению с ними), но вот пример самого кода одного и того же действия с официальной страницы программы (ONLYOFFICE) показывает всю «прелесть» «отечественного» продукта.

Про написание такого макроса (поиска первой пустой ячейки снизу столбца А) на Lua (МойОфис) я не скажу, ибо вэбинар «методология обучения основам Lua, которая позволяет быстро научиться созданию макросов в редакторах МойОфис.» буквально взорвал мой мозг количеством воды и отсутствием конкретики. Впрочем желающие могут погрузиться на канал МойОфис и постигнуть всё и вся. Дерзайте.
О программировании под LibreOffice, точнее возможности частичного использования макросов на VBA, писал ранее.
Так что решайте сами надо ли оно вам. Я просто хотел чуть чуть сравнить работу.
УПД И почему взяты эти три альтернативы? Потому что МойОфис, AlterOffice (тот же LO, но платный и с закрытойскачкой) и Р7 входит в единый реестр российского ПО (желающие смотрим тут ) , кроме того МойОфис имеет сертификат ФСТЭК т.е. по сути является единственным вариантом для гос.учреждений с секретностью Ж(

Обоснуй


Кадровики, в чем смысл накопления трудовых в ОК?
Одна моя знакомая устроилась на работу. Хотела по совместительству, но ей непосредственная начальница сказала, что нельзя. На вопрос, почему, ответила, что лучше более высокого начальника даже не спрашивать, «у них не принято». В бухгалтерии, однако, возразили, что можно, и даже помогли написать правильное заявление. «Более высокий» начальник, увидев это заявление, рассвирепел, устроил истерику, заявление порвал, бухгалтершу уволил. Теперь выясняется, что совмещать все же можно, но при условии, что трудовая лежит здесь, а не на старой работе.
Смысл этого нам неясен, вопросов, как вы помните, задавать нельзя.
Быть может, кто-то объяснит, в чем выгода собирания трудовых книжек?

Вы недооформились! (Снова о кадровиках)
Устроился на новую работу. В первый день на оформлении выдали кучу документов на подпись: и согласие на обработку персональных данных, и заявление на перечисление зарплаты на карту (с реквизитами), и трудовой договор, и ознакомление во всех журналах со всеми регламентами и инструктажами. Пол дня всё это заняло.
День на третий видит меня кадровичка в коридоре и издалека на всю контору кричит:
К: VanyaDW, подождите, подойдите ко мне! Вы недооформились!
Я, естественно, в непонятках, спрашиваю, что это значит?
К: Вы не предоставили (!) заявление с банковскими реквизитами, бухгалтерия теперь не знает, куда вам зарплату перечислять!
Я: Что значит «я не предоставил»?
А меня разозлило так.
Я: Вы серьезно думаете, что мне дали бланк, а я его принципиально заполнять не стал? Чтобы предприятие мне зарплату не могло заплатить? Может быть, это вы просто предоставленный документ потеряли?
К: Ой, ну может быть, сотрудница просто не приложила! Вы только так не нервничайте!
Нравится мне этот подход: не «Мы — курицы, ваш документ потеряли, извините. «, а «Вы недооформились!».

Ответ на пост «Кадровики-формалисты на страже уровня зарплаты»
Год назад уволился по сокращению отдела, бюджетная организация. 21 год проработал. Уволился с радостью, 40 с лишним офицального трудового стажа, из них 15 лет Крайнего Севера. Пенсионер МВД с 1998 г. Никуда не устроился и не собираюсь. Что бы там не пели терешковы и им подобные, ранняя заработанная неплохая пенсия — это прекрасно.
При увольнении кадры сделали всё правильно, но в бухгалтерии молодая расчетчица насчитала выплаты по сокращению в полтора раза меньше, чем положено по ТК. Устные претензии бухгалтерия не приняла — «программа так считает».
Ранее я писал жалобы своему руководителю про график работы, оплату сверхурочных, несвоевременную выплату ночных. Вопросы решались положительно для меня. Написал и на этот раз, выплатили всё как положено.
Недавно звонок от приятеля, там работает. В ходе разговора сказал, что зам. (тот вообще под 30 лет там проработал) вспоминал меня «добрым» словом, мол, был такой редиска-жалобщик, и уволить его до сокращения никак не получалось, и премии лишить никак.
Мне было приятно.

Если человек не подошёл к нам в компанию, так , что , он не человек?
Я тот самый сотрудник отдела кадров, который всегда перезванивает кандидатам, которые не подошли на открытую вакансию. Делать мне это приходится либо по дороге домой, либо уже дома, так как в кабинете или в здании офиса я это делать не могу. Видите ли, политика очень известной компании не позволяет себе такие «слабости», а я прекрасно помню себя, когда пропускала неплохие варианты из-за того, что надеялась на звонок из более хорошего места.

Ответ Faruga в «Хобби при собеседовании»
А я как-то проходила собеседование в одну фирму. Уже пообщалась с двумя руководителями, определили, что меня надо в другой отдел, пообщалась с руководителем этого отдела. В конце решили направить меня к генеральному директору, тоже пообщаться познакомиться. Не помню что он у меня спрашивал, как-то просто непринуждённо поговорили, а потом он говорит что всегда задаёт соискателям один вопрос: кубический корень из 27. Я конечно ответила) Работа если что не тесно связана с математикой. Видимо так он проверяет насколько человек свой. В эту компанию меня взяли, но я в итоге осталась на предыдущей работе, потому что когда там узнали, что я ухожу, смогли уговорить остаться.

Скрипт для экселя- ссылка в тайминг
Всем добрый день.
Хочу обратиться к Пикабу-разуму в вопросе Офиса.
Для размещения поста на Пикабу имеется заранее подготовленная таблица в Эксель.
первая колонка- тайминг новости, вторая колонка — тело новости, третья колонка — ссылка на новость, что является обязательным в теге «политика».
в сильно упрощенном виде это выглядит банально:

До недавних нововведений в редакторе постов Пикабу, CSV сохраненный из Экселя втаскивался в редактор через скрипт в обозревателе. И получался хорошо известный некоторым вариант

НО в свете все известных событий (прогресс не остановить!) скрипт отвалился и судя по консилиуму специалистов воскрешению не подлежит, методологически так сказать.
Отсюда простой вопрос: можно ли скриптом или как-то иначе автоматизировать в Экселе или в ОпенОфисе вставку ссылок в тайминги?
То есть мы из 3 колонок должны получить две.
Для интересующихся — в обычном финальном Пузыре 60-90 новостей.
Вставлять руками можно, но ЛЛ меня и так гнобит
Ответ на пост «Работничек»
Дают задачу для доработки бекенда. Там простой фикс, говорили они. Думаешь, сейчас сделаешь за 20 минут и готово, но там:
1. Название задачи «Нужно починить сайт»
2. Есть сваггер, последнее обновление год назад
3. Схема запросов, ответов и описание никто не актуализировал
4. Описание задачи максимально абстрактное, очевидно, писал менеджер
5. Разработчик, который писал код, уволился полгода назад
6. Менеджер ушёл в отпуск
7. Дедлайн через пару дней в пятницу
8. У тебя испытательный срок


Работничек


EXCEL — ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО
Я решил с двух ног ворваться в тему макросов.

Кто-то про них слышал, кто-то даже видел, отдельные сверхразумы их даже использовали. Сегодня будет ознакомительный пост: что это вообще такое и как с этим начать работать. Обратите внимание – этот пост тех, кто не знает, что такое макросы и никогда с ними не работал
Первым делом нужно включить вкладку «Разработчик». По умолчанию в Excel ее спрятали, чтобы не взорвать мозг юзерам. Идем в Параметры -> Настройка ленты -> Основные вкладки -> Разработчик (поставить галочку).

Теперь идем в эту вкладку, нажимаем «Записать макрос» выбираем имя жмакаем «ок». Все, теперь любые действия в Excel надежным образом записываются.

Давайте теперь что-то сделаем. На пример поменяем заливку ячейки А1, в ячейку A2 напишем значение «Мама, я программист», а в ячейке А3 пропишем формулу текущей даты «=Сегодня()»

Останавливаем запись макроса. Нажимаем иконку «Макросы», выбираем наш макрос как мы его обозвали, нажимаем кнопку «изменить».

Появляется окно Microsoft Visual Basic for Applications. Кстати оно также вызывается комбинацией клавиш (Alt + F11) У меня почему-то вызывается только левым Altом, а правым нет, видимо намекая на то что для написания макросов лучше иметь 2 руки (хотя я и одной нажать могу). Появился редактор языка VBA – это язык, который написан специально под офис чтобы на нем писать макросы. В основном окне видим саму эту запись, которую автоматически сделал Excel.
Sub Макрос2()
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range(«A2»).Select
ActiveCell.FormulaR1C1 = «Мама, я программист»
Range(«A3»).Select
ActiveCell.FormulaR1C1 = «=TODAY()»
Range(«A4»).Select
End Sub
Такой инструмент автоматической записи называется макрорекордер, по началу он хорошо помогает вообще понять, что происходит. Теперь давайте разберемся как выглядит записанный макрос (записанный макрос у автора этой статьи может различаться с записанным макросом у вас поскольку форма записи с макроса зависит от последовательности нажатий, способах ввода информации и криворукости пользователь, в любом случае автор этой статьи снимает с себя всю ответственность за любые действия которые привели или могут привести к изменению годовых отчетов, искажению пространственное – временного континуума и прочих непредвиденных вымираний.)
Теперь давайте разбираться что делает этот макрос
Sub Макрос2()
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
(Весь этот кусок от начала говорит нам о том, что с тем элементом что был выделен ранее происходит некоторое дерьмо, в том числе изменение цвета. Вот там, где Color = 255. Все остальное это параметры заливки, которые по итогу не менялись, но макрорекордер решил их тоже записать, на всякий. Это связано с внутренними особенностями работы excel как я понял. Вообще привыкайте к тому что макрорекордер пишет много того что потом вообще можно удалить. Конструкция With – End With позволяет делать несколько действий с одним объектом, на пример выше берется объект Selection.Interior, то есть фон выбранной области и ряду параметров этой заливки назначаются конкретные значения. То есть With нужен для облегчения записи кода, чтобы Selection.Interior не писать вначале каждой строчки.
Range(«A2»).Select –выделяем ячейку «A2»
ActiveCell.FormulaR1C1 = «Мама, я программист» – пишем в ячейку значение
Range(«A3»).Select – выделяем ячейку «А3»
ActiveCell.FormulaR1C1 = «=TODAY()» –пишем в ячейку формулу
Range(«A4»).Select – зачем то выделяем ячейку А4.
End Sub
Теперь при создании нового листа и запуске этого макроса он будет делать все то же самое.
Тут стоит понимать, что половину того что записал макрос можно опустить, так как нам важен результат, а не путь по которому к этому результату пришли, а макрорекордер записывает именно путь. На пример вместо всей конструкции With можно записать
так как мы точно знаем, что хотим поменять только цвет в ячейке А1. Также вместо того чтобы выделять ячейку, а потом в активной ячейке писать формулу можно сразу записать нужное значение в ячейку
Range(“A2”).Value = ”Мама, я программист”
или писать формулу как в третей ячейке
С формулами и значениями лично мне не понятно, как excel их интерпретирует, но в макрорекордре он записывает любой ввод в ячейку как ввод формулы. Благо лично у меня при написании макросов не возникает необходимости писать формулы в ячейки. На пример вместо вставки формулы как это было выше можно написать Range(“A3”).Value = Date(), тогда макрос вставит сразу текущую дату в ячейку как значение.
Опытные макроделы пишут макросы сразу без их записи макрорекордером, но это полезный инструмент для самостоятельного изучения при написании макросов: если не знаешь, что как делается в VBА то запускаешь и делаешь, потом смотришь что он там написал.
Теперь давайте напишем какой ни будь полезный макрос, я буду писать строчки и как можно подробнее их комментировать. Комментарии от программы отделяются символом «‘», он ставится вначале комментария. Прошу учесть, что я самоучка и многого не знаю, и просто напишу так ка делаю это сам, возможно есть более изящные решения. Напоминаю, что это просто ознакомительный опус для тех, кто не в зуб ногой.
Sub Colorization()
‘начало нашего макроса и его название
Dim x As Integer
‘объявляем переменную х типа интеджер, это тип для целых чисел от -32 768 до 32 767 (2 байта),
‘она нам нужна для перебора ячеек
For x = 1 To ActiveSheet.UsedRange.Rows.Count
‘перебираем х от 1 до конца использованной части листа, то есть не весь лист, а там где есть данные.
‘Тут цикл For повторяется от этой строки до строки Next x, которая прописана ниже
If Cells(x, 1).Value = «красный» Then Cells(x, 1).Interior.Color = RGB(255, 0, 0)
‘если значение в ячейке равно «красный» то закрашиваем ячейку в красный цвет. Функция If выполняет часть
‘после Then если условие между If и Then верно. Так как у нас необходимое действие занимает одну
‘строку можно писать в таком виде, если же действий несколько применяется конструкция:
‘If … Then
‘…
‘…
‘End If
If Cells(x, 1).Value = «зеленый» Then Cells(x, 1).Interior.Color = RGB(0, 255, 0)
‘как выше только в зеленый цвет
If Cells(x, 1).Value = «синий» Then Cells(x, 1).Interior.Color = RGB(0, 0, 255)
‘в синий цвет
Next x ‘берем следующее значение х, конец цикла For, который мы начали выше
End Sub ‘конец макроса
Как работает этот макрос: берет первый столбец, сначала 1 ячейку, смотрит что в ней написано, и если это равно «красный», «зеленый» или «синий», то красит фон ячейки в этот цвет, если нет по пропускает. Потом берет вторую и т. д. до конца активной части текущего листа.
Для проверки работы макроса нам нужен лист, где в первом столбце будут случайным образом прописаны цвета «красный», «зеленый», «синий». Запускаем макрос – когда он отработает ячейки будут раскрашены:

Некоторые пояснения: если не писать просто Cells то макрос будет делать все в активном листе активного окна. Но макрос может идти и в другие листы, файлы, даже в другие приложения офиса, но об этом не сегодня.
После того, как макрос поработал с документом, не удастся кнопкой «назад» вернуть все изменения, так что, если данные важны, то сохраняйте их отдельно и макросом работайте с копией, макросы беспощадны.
Итак, на этом пока все. Надеюсь теперь те, кто никогда не видел макросов получат о них начальное представление. Дальше буду писать про более практичное применение.
Как удалить конкретную фигуру на листе с помощью VBA?
У меня есть лист с множеством форм. Мне нужно удалить только фигуры, которые расположены после 15-й строки, и фигуры, на которых написано «Изменить размер и очистить все». Фигуры представляют собой прямоугольник: закругленные углы, сохраняющие текст и имеющие назначенный макрос

Как вы можете видеть на изображении, у меня будут фотографии (скриншоты), и оно не может быть удалено, я пытаюсь удалить синюю «кнопку».
Почему мне это нужно, потому что я использую пользовательскую форму с ListBox, чтобы выбрать правильный лист, чтобы пользователь Excel мог объединить старый лист с новым (базовая информация в виде строки и рисунков (снимков экрана) будет скопирована с 1 листа другому). Работает нормально. Тем не менее, я заметил, что прямоугольник формы: закругленные углы дублируются, и он также вставляется в новый лист (и мне это не нужно). Поэтому я решил сначала удалить фигуры, а затем объединить листы. Вот мой код
Ps: по какой-то причине, когда код попал сюда Range(«C1»).Copy Alert.Range(«C1») , он автоматически вызывает текст сравнения параметров, но даже при этом код все равно работает, но «синие кнопки» или копируются со старого листа и вставляются в новый лист (дублируя его) или перед объединением листа «синие кнопки» будут удалены со старого листа, по какой-то причине «синяя кнопка на новом листе изменит диапазон».
3 ответа
Попробуйте следующий код (теперь он удаляет только прямоугольники со скругленными углами в соответствии с вашими условиями):
И версия кода, удаляющая все типы фигур (за исключением картинок), начинаю работать, прежде чем вы ответите на мой вопрос:
Во-первых, ваше If-утверждение неверно, см. Комментарий BigBen:
Тем не менее, это будет проверять имя фигур, а не их текст. Чтобы получить текст фигуры, вы можете использовать oShape.TextFrame2.TextRange.Text . Тем не менее, вы можете столкнуться с двумя небольшими проблемами:
(1) Существуют фигуры без текста, например, Картинки. Это можно проверить с помощью oShape.TextFrame2.HasText
(2) Может случиться так, что текст имеет новую строку в конце или содержит пробелы в начале или в конце, поэтому я предлагаю вам записать содержимое в переменную и использовать функцию Instr -: