Textbox в excel как удалить

Обновлено: 05.07.2024

Очень часто при работе с формами(UserForm) приходится заполнять значениями КомбоБоксы(ComboBox) и ТекстБоксы(TextBox). Иногда однотипными данными. Или очистить их все после выполнения какого-либо действия. А может проверить, все ли элементы заполнены, прежде чем продолжать действие. Если КомбоБоксов/ТекстБоксов пару штучек - не проблема

и всех делов. А если их порядка двадцати? Или больше? Мало того, что писать это все долго, так еще и код растягивается, как портянка. Но это можно сделать гораздо проще и удобнее. Воспользоваться можно несколькими способами. Этот способ наиболее популярен, если необходимо произвести однотипные действия со всеми ТекстБоксами на форме:

Sub All_TextBoxes() Dim oControl As Control For Each oControl In UserForm1.Controls If TypeOf oControl Is MSForms.TextBox Then oControl.Value = "" Next oControl End Sub

В примере элементы формы очищаются, но в код можно подставить любое действие - добавление нового элемента списка(для ComboBox), поменять представление данных в TextBox, проверить наличие данных в проверяемом элементе и т.д. Тут уж зависит от поставленной задачи. Конечно, подобным способом можно проделать разные действия и с остальными элементами формы. Только надо будет заменить тип для проверки элементов:

Это не единственный способ проделывания однотипных действий с элементами формы. Код ниже использует имена элементов для обращения к ним:

Sub All_TextBoxes() Dim li As Long For li = 1 To 10 UserForm1.Controls("TextBox" & li).Value = li Next li End Sub

Недостаток данного метода: имена элементов должны строго соответствовать используемым в коде и лишь нумерация на конце имени должна различаться. За нумерацию отвечает переменная li и, конечно, цикл, в котором задается начальное и конечные значения. В примере ТекстБоксам с именами от "TextBox1" до "TextBox10" будут подставлены значения номеров самих ТекстБоксов. Но такой недостаток может быть очень полезным. Например, если необходимо проделать действия не над всеми ТекстБоксами, а лишь над некоторыми из них. Тогда все, что необходимо дать ТекстБоксам определенные имена с нумерацией("ToDB1","ToDB2" и т.д.) и в зависимости от имени можно проделывать различные действия: стирать значения, менять свойства элементов и т.д.
И есть еще один плюс такого подхода: когда необходимо заполнить значения ТекстБоксов значениями ячеек. Скажем надо заполнить 10 ТекстБоксов(с именами TextBox1 , TextBox2 , TextBox3 и т.д.) из ячеек диапазона A2:A11 листа с именем "Лист2"(т.е. из 10 ячеек, начиная с ячейки A2). Код будет выглядеть так:

Sub Fill_TextBoxes_FromCells() Dim li As Long For li = 1 To 10 UserForm1.Controls("TextBox" & li).Value = Sheets("Лист2").Range("A" & li).Value 'или применить Cells вместо Range 'UserForm1.Controls("TextBox" & li).Value = Sheets("Лист2").Cells(li, 1).Value Next li End Sub

Подробнее про обращение к диапазонам из VBA можно узнать из этой статьи: Как обратиться к диапазону из VBA

Кстати говоря, примерно так же можно перебрать элементы ActiveX не на форме, а на листе(вставляются на лист через вкладку Разработчик (Developer) -Вставить (Insert) -Элементы ActiveX (ActiveX Controls) ). Например, снимем флажки со всех CheckBox-ов:

Sub Off_ShapeCheckBoxes() Dim oControl 'цикл по всем объектам на листе For Each oControl In ActiveSheet.DrawingObjects 'определяем тип объекта - если это Элемент форм, то будет указание на конкретный тип If TypeName(oControl) = "CheckBox" Then oControl.Value = 0 End If Next oControl End Sub

В данном случае для определения конкретного типа контрола используется TypeName. В коде выше нам нужны CheckBox-ы и на них и проверяем. А вот список основных элементов форм, которые доступны по умолчанию для всех версий для вставки на лист:
Button - кнопка
DropDown - поле со списком
CheckBox - флажок
Spinner - счетчик
ListBox - список
OptionButton - радиокнопка
GroupBox - группа(рамка)
Label - надпись
ScrollBar - полоса прокрутки

Если совместить, то можно снять флажки со всех checkBox-ов - и ActiveX и Элементов форм:

В итоге, определяя конкретный тип элемента можно производить над ним нужные действия.

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Представляет объект TextBox форм Windows Forms, который можно добавить в рабочий лист Microsoft Office Excel.

Комментарии

Microsoft.Office.Tools.Excel.Controls.TextBoxОтличается от System.Windows.Forms.TextBox . Microsoft.Office.Tools.Excel.Controls.TextBoxИмеет дополнительные члены, которые позволяют добавлять его в лист Excel и предоставлять ему дополнительные методы и свойства.

Не используйте New конструктор для создания нового TextBox . Используйте AddTextBox метод, чтобы добавить новый объект TextBox в лист.

Свойства

Возвращает объект Application, представляющий собой создателя TextBox.

Возвращает объект Border, представляющий границу элемента управления TextBox.

Возвращает или задает расстояние в точках между нижним краем элемента управления TextBox и верхним краем рабочего листа.

Возвращает объект Range, представляющий ячейку, расположенную под нижним правым углом TextBox.

Возвращает значение, указывающее на приложение, в котором был создан объект TextBox.

Получает или задает высоту элемента управления TextBox.

Возвращает номер индекса TextBox внутри коллекции OLEObjects на листе.

Возвращает объект Interior, представленный внутри TextBox.

Возвращает или задает расстояние в точках между левым краем TextBox и левым краем рабочего листа.

Возвращает или задает значение определяющее который TextBox может быть изменен во время разработки когда лист защищен.

Возвращает значение, представляющее тип OLE-объекта.

Получает родительский объект объекта TextBox.

Возвращает или задает объект, указывающий способ присоединения объекта TextBox к расположенным ниже ячейкам.

Возвращает или задает значение, указывающее, будет ли объект TextBox выводиться на печать при печати рабочего листа.

Возвращает расстояние в пунктах между правым краем элемента управления TextBox и левым краем рабочего листа.

Возвращает диапазон ShapeRange, представляющий объект TextBox.

Получает или задает имя источника ссылки объекта TextBox.

Возвращает или задает расстояние в точках между верхним краем TextBox и верхним краем рабочего листа.

Возвращает объект Range, представляющий ячейку, расположенную под верхним левым углом объекта TextBox.

Возвращает или задает значение, которое представляет видна ли TextBox.

Возвращает или задает ширину элемента управления TextBox в пунктах.

Возвращает позицию z-порядка объекта TextBox.

Методы

Помещает объект TextBox в начало z-порядка.

Копирует объект TextBox в буфер обмена как рисунок.

Удаляет динамически созданный объект TextBox из рабочего листа, а затем удаляет его из коллекции ControlCollection.

Удаляет динамически созданный объект TextBox из рабочего листа, а затем удаляет его из коллекции ControlCollection. Deletes a dynamically created TextBox from the worksheet and removes it from the ControlCollection.

Возвращаемое значение

Примеры

Пример кода, демонстрирующий использование этого метода, см. в разделе Microsoft.Office.Tools.Excel.Controls.Button.Delete . For a code example that demonstrates how to use this method, see Microsoft.Office.Tools.Excel.Controls.Button.Delete. Все элементы управления в Microsoft.Office.Tools.Excel.Controls пространстве имен имеют функционально эквивалентный Delete метод. All controls in the Microsoft.Office.Tools.Excel.Controls namespace have a functionally equivalent Delete method.

Комментарии

Этот метод следует использовать только с TextBox , который создается программно во время выполнения. This method should only be used with a TextBox that is created programmatically at run time. Исключение возникает при вызове этого метода для объекта TextBox , который добавляется на лист во время разработки. An exception is thrown if you call this method on a TextBox that is added to the worksheet at design time.

Как удалить textbox в excel

Вставив в Excel скопированную таблицу с сайта – расписание электричек, поездов, расписание уроков и тому подобное, зачастую видели различные элементы управления, которые засоряли таблицу (Рис.1). Избавиться от них очень хочется, но как это сделать быстро?

Рисунок 1. Лишние чекбоксы в таблице Excel

Рисунок 1. Лишние чекбоксы в таблице Excel

Для того, чтобы удалить "чекбоксы" (Рис.1) из таблицы Excel, нужно воспользоваться функцией "Выделить группу ячеек" из группы "Найти и выделить".

Рисунок 2. Выбор чекбоксов

Рисунок 2. Выбор чекбоксов

В открывшемся окне нужно выбрать пункт "Объекты" и нажать ОК.

Рисунок 3. Выбор чекбоксов и других объектов

Рисунок 3. Выбор чекбоксов и других объектов

После этого нужно нажать кнопку "Delete" на клавиатуре для удаления. Кнопка "Удалить" в риббоне будет неактивна!

При копировании на рабочий лист Excel информации со страницы из сети Интренет периодически помимо текста вставляются ненужные картинки и различные элементы управления (кнопки, флажки и т.д.). Если их количество значительное, то удалять "вручную" окажется трудоемким процессом.

Имеется несколько способов решить данную проблему: средствами программы Excel и с помощью макроса VBA.

Удаление картинок и объектов в Excel средствами программы

В результате вставки данных со страницы Интернет-сайта скопировались ненужные картинки и элементы управления:


Чтобы удалить ненужные объекты, сначала необходимо выделить эти элементы, для этого перейдите в меню "Главная" -> "Редактирование" -> "Найти и выделить"-> "Выделение группы ячеек" (можно также кликнуть клавишу F5, а затем нажать кнопку "Выделить. ").


В открывшемся окне необходимо выбрать пункт "Объекты" и кликнуть "OK":


В результате Excel выделит все требуемые объекты (если необходимо какие то элементы оставить, то необходимо зажать клавишу Ctrl и левой кнопкой мыши кликнуть на необходимые элементы, для снятия выделения):


Теперь осталось только нажать клавишу Delete, чтобы удалить все выделенные объекты.


Удаление картинок и объектов в Excel с помощью макроса VBA

Указанную выше проблему можно решить, написав в редакторе Visual Basic следующий макрос:

Если же необходимо удалить только картинки, тогда макрос необходимо изменить на:

Можно дополнить макрос еще одной полезной функцией - удаление гиперссылок:

Объединив два действия в одну функцию DeleteObjects будут удалены все объекты и ссылки:

В результате выполнения макроса на листе будут удалены все объекты, а гиперссылки заменятся на обычный текст.

Читайте также: