DjAlex77 Пользователь Сообщений: 102 |
#1 25.09.2018 07:20:03 Всем доброго времени суток.
Но вот как сюда «Validation.Delete» вставить? Помогите Пожалуйста! |
||
SAS888 Пользователь Сообщений: 757 |
#2 25.09.2018 07:30:26 Например, так:
Изменено: SAS888 — 25.09.2018 07:41:51 Чем шире угол зрения, тем он тупее. |
||
DjAlex77 Пользователь Сообщений: 102 |
SAS888, |
DjAlex77 Пользователь Сообщений: 102 |
#4 25.09.2018 08:25:36 SAS888,
Работает А вот
у меня не работает |
||||
Nordheim Пользователь Сообщений: 3154 |
#5 25.09.2018 08:30:03
Это подразумевает обработку той книги в которой находится сама процедура. «Все гениальное просто, а все простое гениально!!!» |
||
SAS888 Пользователь Сообщений: 757 |
#6 25.09.2018 08:30:12 ThisWorkbook — это книга, содержащая выполняемый макрос.
Чем шире угол зрения, тем он тупее. |
||
DjAlex77 Пользователь Сообщений: 102 |
#7 25.09.2018 08:55:53 У меня заработало только так
Не знаю почему, открыта только эта книга. Спасибо Вам Огромнейшее!!! |
||
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14183 Профессиональная разработка приложений для MS Office |
#8 25.09.2018 10:25:59
А код скорее всего при этом в PERSONAL )) Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
DjAlex77 Пользователь Сообщений: 102 |
Не подскажете, что значит PERSONAL? |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
#10 25.09.2018 12:17:17 PERSONAL — личная книга макросов. |
I want to use VBA to delete all comboboxes in a sheet (form control type not active X)
I have
For Each s In ActiveSheet.Shapes
s.Delete
Next s
The problem is it deletes all my shapes, and I’m having trouble finding the logic just to delete comboboxes (which have different names)
Thanks for any help!
asked Jun 16, 2014 at 21:09
With ActiveSheet.DropDowns
Do While .Count > 0
.Item(1).Delete
Loop
End With
or just
activesheet.dropdowns.delete
answered Jun 16, 2014 at 21:25
Tim WilliamsTim Williams
150k8 gold badges96 silver badges124 bronze badges
3
If the only Forms you have are these comboboxes, then:
Sub qwerty()
Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = 8 Then
s.Delete
End If
Next s
End Sub
answered Jun 16, 2014 at 21:30
Gary’s StudentGary’s Student
95.3k9 gold badges58 silver badges98 bronze badges
2
Добрый день гуру excel!!!
Я не так часто пишу что-то в макросах, однако сейчас встала такая вот задача и я столкнулся с проблемой. Поиски решений в интернете не дали результата. Хотя несколько близких тем я нашел.
Здесь вот чувак бился над похожей задачей, но как он ее разрешил я все же разобрать не смог. https://stackoverflow.com/questio….-variab
Я опишу задачу в двух словах. У меня есть книга, в ней есть два листа. Лист — «Карточка Клиента» с программным именем Client_Card и Лист — «Данные» c программным именем staff_list.
На Листе1 есть табличка, в нескольких ее ячейках я хочу вывести выпадающие списки.
На листе2 храниться данные для выпадающего списка.
Я хочу использовать объект Range, который бы позволил мне меняться в случаи увеличения значений в списке
Я кстати пробовал вставить списки используя диапазон… но это тоже не сработало. Видимо нужно конкретно в ячейку вставлять.
[vba]
Код
With Client_Card.Range(Client_Card.Cells(14, 3), Client_Card.Cells(27, 3)).Validation
[/vba]
Я создал в книге с примером код. Как раз тот который работать не хочет.
Я пробовал просто вставлять в
[vba]
Код
…. Formula1:=staff_list.Range(staff_list.Cells(2, 1), staff_list.Cells(9, 1)).Value ‘но так оно не работает.
[/vba]
[vba]
Код
With Client_Card.Cells(14, 3).Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=staff_list.Range(staff_list.Cells(2, 1), staff_list.Cells(9, 1)).Value
End With
[/vba]
Пробовал через переменную… но так тоже не работает
[vba]
Код
Private Sub CommandButton1_Click()
Dim bbbb As String
bbbb = staff_list.Range(staff_list.Cells(2, 1), staff_list.Cells(9, 1)).Value ‘
With Cells(14, 3).Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=»=bbbb»
End With
End Sub
[/vba]
Я подозреваю что список этот, в переменной необходимо подать через запятую… то есть видимо его надо прогнать через массив, где каждому значению подставить запятую и сформировать конечную переменную со всеми значениями через запятую.
Но я пока не стал так делать, в надежде что есть более простой способ, а я просто туплю…
В обще я хочу формировать данный выпадающие список на листе «Карточка клиента», при запуске книги. Но это потом, сейчас хотелось бы его заставить код работать
Всем доброе!
При загрузке формы поле со списком у меня заполняется так:
Visual Basic | ||
|
или так (не знаю, как лучше ):
Visual Basic | ||
|
Но после появления формы первоначально поле списка пустое. Потом мы выбираем какое-либо значение и работаем.
Наш выбор так и остается в этом поле. Есть вопрос: как, не переоткрывая форму, очистить ComboBox, чтобы отображалось опять пустое значение.
Надеюсь, понятно написал) Прошу простить, если тема была — никак не найду ответа на такой (надеюсь простой) вопрос.
Элемент управления пользовательской формы ComboBox для выбора и ввода информации в VBA Excel. Свойства поля с раскрывающимся списком, заполнение, извлечение данных, примеры кода.
UserForm.ComboBox – это элемент управления пользовательской формы, предназначенный для передачи в код VBA информации, выбранной пользователем из раскрывающегося списка или введенной с клавиатуры.
ComboBox представляет из себя комбинацию двух элементов управления: текстового поля (TextBox) и списка (ListBox), поэтому его еще называют «комбинированным списком» или «полем со списком». Также ComboBox сочетает в себе свойства этих двух элементов управления.
Изначально комбинированный список прорисовывается на форме в виде текстового поля с кнопкой для отображения раскрывающегося списка. Далее по тексту будем использовать слово «поле» в значении текстового поля в составе элемента управления ComboBox, а словосочетание «раскрывающийся список» – в значении списка в составе элемента управления ComboBox.
Поле со списком используется в тех случаях, когда необходимо добавить в форму информацию, которая заранее известна, а ее отдельные позиции можно сгруппировать в список, а также для ручного ввода с клавиатуры или вставки из буфера обмена, если необходимое значение в списке отсутствует.
Элемент управления ComboBox незаменим при больших списках. При списках из нескольких позиций его можно заменить на ListBox, который отображает позиции для выбора сразу после загрузки формы, не требуя дополнительных действий от пользователя.
Свойства поля со списком
Свойство | Описание |
---|---|
AutoSize | Автоподбор размера комбинированного поля. True – размер автоматически подстраивается под длину выбранной или введенной строки. False – размер элемента управления определяется свойствами Width и Height. |
AutoTab | Включение автоматической табуляции – передачи фокуса следующему элементу управления при достижении максимального числа символов при значениях свойства MaxLenght > 0. True – автоматическая табуляция включена, False – выключена. |
ColumnCount | Указывает количество столбцов в раскрывающемся списке. Значение по умолчанию = 1. |
ColumnHeads | Добавляет строку заголовков в раскрывающийся список. True – заголовки столбцов включены, False – заголовки столбцов выключены. Значение по умолчанию = False. |
ColumnWidths | Ширина столбцов в раскрывающемся списке. Значения для нескольких столбцов указываются в одну строку через точку с запятой (;). |
ControlSource | Ссылка на ячейку для ее привязки к элементу управления ComboBox. |
ControlTipText | Текст всплывающей подсказки при наведении курсора на элемент управления. |
Enabled | Доступ пользователя к полю и раскрывающемуся списку. True – доступ разрешен, False – доступ запрещен*. Значение по умолчанию = True. |
Font | Шрифт, начертание и размер текста в поле. |
Height | Высота элемента управления ComboBox. |
Left | Расстояние от левого края внутренней границы пользовательской формы до левого края комбинированного списка. |
List | Позволяет заполнить ComboBox данными из одномерного или двухмерного массива, а также обращаться к отдельным элементам раскрывающегося списка по индексам для записи и чтения. |
ListIndex | Номер выбранной пользователем строки в раскрывающемся списке. Нумерация начинается с нуля. Если ничего не выбрано, ListIndex = -1. |
ListRows | Количество видимых строк в раскрытом списке. Если общее количество строк больше ListRows, появляется полоса прокрутки. Значение по умолчанию = 8. |
Locked | Запрет на отображение раскрывающегося списка, ввод и редактирование данных в поле. True – ввод и редактирование запрещены**, False – ввод и редактирование разрешены. Значение по умолчанию = False. |
MatchRequired | Задает проверку вводимых в поле строк с элементами списка. True – проверка включена (допускается ввод только строк, совпадающих с элементами списка), False – проверка выключена (допускается ввод любых строк). Значение по умолчанию = False. |
MaxLenght | Максимальная длина строки в поле. Значение по умолчанию = 0, что означает – ограничений нет. |
RowSource | Источник строк для раскрывающегося списка (адрес диапазона на рабочем листе Excel). |
TabIndex | Целое число, определяющее позицию элемента управления в очереди на получение фокуса при табуляции. Отсчет начинается с 0. |
Text | Текстовое содержимое (значение) поля (=Value). |
TextAlign | Выравнивание текста в поле: 1 (fmTextAlignLeft) – по левому краю, 2 (fmTextAlignCenter) – по центру, 3 (fmTextAlignRight) – по правому краю. |
Top | Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края комбинированного списка. |
Value | Текстовое содержимое (значение) поля (=Text). |
Visible | Видимость поля со списком. True – ComboBox отображается на пользовательской форме, False – ComboBox скрыт. |
Width | Ширина элемента управления. |
* При Enabled в значении False пользователь не может раскрывать список, а также вводить или редактировать данные в поле.
** Для элемента управления ComboBox действие свойства Locked в значении True аналогично действию свойства Enabled в значении False.
В таблице перечислены только основные, часто используемые свойства поля со списком. Еще больше доступных свойств отображено в окне Properties элемента управления ComboBox, а все методы, события и свойства – в окне Object Browser.
Вызывается Object Browser нажатием клавиши «F2». Слева выберите объект ComboBox, а справа смотрите его методы, события и свойства.
Свойства BackColor, BackStyle, BorderColor, BorderStyle отвечают за внешнее оформление комбинированного списка и его границ. Попробуйте выбирать доступные значения этих свойств в окне Properties, наблюдая за изменениями внешнего вида элемента управления ComboBox на проекте пользовательской формы.
Способы заполнения ComboBox
Используйте метод AddItem для загрузки элементов в поле со списком по одному:
With UserForm1.ComboBox1 .AddItem «Элемент 1» .AddItem «Элемент 2» .AddItem «Элемент 3» End With |
Используйте свойство List, чтобы скопировать одномерный массив значений в элемент управления ComboBox:
UserForm1.ComboBox1.List = Array(«Строка 1», _ «Строка 2», «Строка 3», «Строка 4», «Строка 5») |
Вместо функции Array можно использовать переменные одномерных и двухмерных массивов. При загрузке значений из двухмерного массива, требуется предварительно указать количество столбцов в комбинированном списке.
Используйте свойство RowSource, чтобы загрузить в ComboBox значения из диапазона ячеек рабочего листа:
UserForm1.ComboBox1.RowSource = «Лист5!B1:B15» |
При загрузке данных из диапазона, содержащего более одного столбца, требуется предварительно указать количество столбцов в комбинированном списке:
With UserForm1.ComboBox1 ‘Указываем количество столбцов .ColumnCount = 5 .RowSource = «‘Таблица с данными’!A1:E20» End With |
В качестве имени листа используется имя ярлыка. Если имя листа содержит пробелы, оно заключается в одинарные кавычки.
Подробнее о заполнении элемента управления ComboBox вы можете ознакомиться в отдельной статье с наглядными примерами. И еще более подробно – в статье о заполнении ListBox, так как ListBox заполняется теми же способами, что и ComboBox.
Привязка поля со списком к ячейке
Чтобы привязать комбинированный список к ячейке на рабочем листе Excel, необходимо свойству ControlSource присвоить адрес ячейки. Это можно сделать непосредственно в окне Properties элемента управления ComboBox или в коде VBA:
UserForm1.ComboBox1.ControlSource = "Лист1!B2"
Имя листа для составного адреса ячейки берется из названия ярлыка. Если имя листа содержит пробелы, оно заключается в одинарные кавычки. При указании адреса без имени листа, ComboBox привязывается к ячейке на активном листе.
В результате привязки образуется взаимосвязь между свойством Value комбинированного списка и значением ячейки. Все изменения в поле ComboBox дублируются в привязанной ячейке и наоборот, изменения в ячейке приводят к изменению текста в поле.
Чтобы протестировать результаты привязки ячейки к полю со списком ComboBox1, разместите на пользовательской форме UserForm1 еще какой-нибудь элемент управления и запустите следующий код VBA Excel:
Sub Test() With UserForm1.ComboBox1 ‘Заполняем список ComboBox1 данными .List = Array(«Красный», «Оранжевый», «Желтый», _ «Зеленый», «Голубой», «Синий», «Фиолетовый») ‘Привязываем ComboBox1 к ячейке «A1» .ControlSource = «A1» ‘Открываем форму в немодальном окне End With UserForm1.Show 0 End Sub |
В результате работы кода пользовательская форма откроется в немодальном окне со значением в поле, скопированном из ячейки «A1» активного листа. Немодальное окно формы позволит редактировать ячейку «A1», не закрывая форму.
Меняйте значение ячейки «A1», нажимайте клавишу «Tab» или «Enter», поле комбинированного списка примет значение ячейки. Меняйте значение поля ComboBox1 с помощью клавиатуры или выбирайте из раскрывающегося списка, нажимайте клавишу «Tab» или «Enter», ячейка «A1» примет значение поля со списком.
Дополнительный элемент управления на форме нужен для передачи ему фокуса нажатием клавиши «Tab» или «Enter», чтобы завершить ввод значения в поле ComboBox1. Иначе новое значение поля будет передано в ячейку «A1» только при закрытии формы.
Значение ComboBox по умолчанию
В раскрывающийся список элемента управления ComboBox1 загружены названия семи основных цветов:
Private Sub UserForm_Initialize() With Me.ComboBox1 .List = Array(«Красный», «Оранжевый», «Желтый», _ «Зеленый», «Голубой», «Синий», «Фиолетовый») ‘Сюда добавляем код вставки значения по умолчанию End With End Sub |
Есть несколько вариантов сделать так, чтобы при открытии пользовательской формы в поле ComboBox1 было отображено значение по умолчанию. Код следует вставлять перед строкой «End With».
‘Вариант 1 (произвольная строка) .Value = «Моя строка по умолчанию» ‘или .Value = «Синий» ‘Вариант 2 (произвольная строка) .ControlSource = «A1» Range(«A1») = «Моя строка по умолчанию» ‘или .ControlSource = «A1» Range(«A1») = «Желтый» ‘Вариант 3 (строка из списка) .ListIndex = 0 ‘Красный ‘или .ListIndex = 3 ‘Зеленый |
Кроме значения по умолчанию, в свойства комбинированного списка можно добавить текст всплывающей подсказки, который будет отображаться при наведении на ComboBox курсора:
UserForm1.ComboBox1.ControlTipText = "Выберите значение из списка"
Извлечение информации из ComboBox
Первоначально элемент управления ComboBox открывается с пустым полем или значением по умолчанию. Свойства Value и Text в этом случае возвращают пустую строку или текст по умолчанию.
Если пользователь выбрал новое значение из раскрывающегося списка или ввел его с клавиатуры, оно перезапишет значения свойств Value и Text. Из этих свойств мы с помощью кода VBA Excel извлекаем информацию, выбранную или введенную пользователем:
Dim myTxt As String myTxt = UserForm1.ComboBox1.Value ‘или myTxt = UserForm1.ComboBox1.Text |
Вторую строку кода можно записать myTxt = UserForm1.ComboBox1
, так как Value является свойством поля со списком по умолчанию.
Если вас интересует, как извлечь значение из многостолбцового раскрывающегося списка, смотрите об этом в статье с описанием элемента управления ListBox. Извлечение данных из комбинированного поля аналогично извлечению данных из ListBox. Знакомясь со статьей, следует учесть, что у ComboBox отсутствует многострочный выбор.
Иногда перед загрузкой в ComboBox требуется отобрать уникальные элементы из имеющегося списка. Смотрите, как это сделать с помощью объектов Collection и Dictionary.
Remove all data validation from a cell in Excel with this free Excel macro. This is a great macro to use when you need to remove all data validation from cells in Excel. This removes drop down menus and lists, input messages, and all other data validation from a cell in Excel.
Below, there are two versions of this macro. The first version works on a specific hard-coded cell or range of cells in Excel while the second macro will work on any selected cell or range of cells within Excel.
To use the first macro, replace A1 with the cell reference or range of cells from which you want to remove data validation. The second macro does not need to be changed; simply select any cell or range of cells in Excel and run the second macro and it will work.
Where to install the macro: Module
Excel Macro to Remove All Data Validation from a Specific Cell or Range of Cells in Excel
Sub Remove_Data_Validation_Cell()
Range("A1").Validation.Delete
End Sub
Excel Macro to Remove All Data Validation from a Selection of Cells in Excel
Sub Remove_Data_Validation_Selection()
Selection.Validation.Delete
End Sub
Excel VBA Course — From Beginner to Expert
200+ Video Lessons
50+ Hours of Instruction
200+ Excel Guides
Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)
View Course
Similar Content on TeachExcel
How to Install the Macro
- Select and copy the text from within the grey box above.
- Open the Microsoft Excel file in which you would like the Macro to function.
- Press «Alt + F11» — This will open the Visual Basic Editor — Works for all Excel Versions.
Or For other ways to get there, Click Here. - On the new window that opens up, go to the left side where the vertical pane is located. Locate your Excel file; it will be called VBAProject (YOUR FILE’S NAME HERE) and click this.
- If the Macro goes in a Module, Click Here, otherwise continue to Step 8.
- If the Macro goes in the Workbook or ThisWorkbook, Click Here, otherwise continue to Step 8.
- If the Macro goes in the Worksheet Code, Click Here, otherwise continue to Step 8.
- Close the Microsoft Visual Basic Editor window and save the Excel file. When you close the Visual Basic Editor window, the regular Excel window will not close.
- You are now ready to run the macro.
MulTEx »
17 Февраль 2014 4479 просмотров
Удаление выпадающих списков из листа/книги
Данная функция является частью надстройки MulTEx
Вызов команды:
MulTEx -группа Ячейки/Диапазоны —Выпадающие списки —Удаление вып.списков из листа/книги
С помощью этой команды можно быстро удалить все выпадающие списки со всего листа, книги или только из указанного диапазона. Подробнее про выпадающие списки, а так же их создание можно прочитать в этой статье.
В диапазоне (
$D$2:$E$20
) — выпадающие списки будут удалены только в указанном диапазоне.
На активном листе — выпадающие списки будут удалены только с активного листа активной книги.
В книге — выпадающие списки будут удалены со всех листов активной книги.
Для чего это может быть нужно? Например есть шаблон, который заполняют в разных отделах. После его заполнения списки уже не нужны и они только мешают, т.к. появляются после каждого нажатия на ячейку. Чтобы исключить вероятность случайного изменения значения ячейки через выпадающий список лучше всего списки удалить.
Для зависимого раскрывающегося списка при изменении значения родительского раскрывающегося списка выбранное значение во втором будет недействительным. Вы должны вручную удалить недопустимое значение из второго раскрывающегося списка после выбора измененного в первом. В этой статье я покажу вам метод автоматической очистки зависимой ячейки раскрывающегося списка после выбора измененных в Excel.
Очистить зависимую ячейку раскрывающегося списка после выбора, измененного с помощью кода VBA
Очистить зависимую ячейку раскрывающегося списка после выбора, измененного с помощью кода VBA
Следующий код VBA помогает очистить зависимый раскрывающийся список после выбора изменений в Excel.
1. Щелкните правой кнопкой мыши вкладку листа, содержащую зависимый раскрывающийся список, который вы очистите автоматически, затем выберите Просмотреть код из контекстного меню.
2. В дебюте Microsoft Visual Basic для приложений окно, скопируйте ниже код VBA в окно.
Код VBA: очистить зависимую ячейку раскрывающегося списка после выбора изменено
Private Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 2018/06/04
Application.EnableEvents = False
If Target.Column = 5 And Target.Validation.Type = 3 Then
Target.Offset(0, 1).Value = ""
End If
Application.EnableEvents = True
End Sub
Внимание: В коде номер 5 — это номер столбца, содержащий родительский раскрывающийся список. В этом случае мой родительский раскрывающийся список находится в столбце E.
3. нажмите другой + Q ключи, чтобы закрыть Microsoft Visual Basic для приложений окно.
С этого момента при внесении изменений в родительский раскрывающийся список содержимое второго раскрывающегося списка будет очищаться автоматически. Смотрите скриншот:
Статьи по теме:
- Как создать зависимые каскадные выпадающие списки в Excel?
- Как создать динамические каскадные списки в Excel?
- Как автоматически заполнять другие ячейки при выборе значений в раскрывающемся списке Excel?
- Как выполнить автозаполнение при вводе в раскрывающемся списке Excel?
- Как создать календарь с выпадающим списком в Excel?
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (9)
Оценок пока нет. Оцените первым!