Список проверки игнорирует пустые ячейки с помощью VBA в Microsoft Excel
В этой статье мы будем использовать событие изменения выбора рабочего листа для создания списка проверки, игнорируя пустые значения.
Исходные данные состоят из названия продукта и нескольких пустых ячеек в столбце A.
Мы хотим создать список проверки для имени продукта, игнорируя пустые ячейки.
Логическое объяснение
В этой статье мы использовали событие изменения выбора рабочего листа для создания проверки в ячейке I12. Во-первых, мы создадим строку, которая будет состоять из всех названий продуктов, разделенных запятыми, игнорируя пустые ячейки. Затем мы добавим эту строку для проверки ячейки.
Объяснение кода
IntLastRow = .Cells (Rows.Count, 1) .End (xlUp) .Row Приведенный выше код используется для получения номера строки последней ячейки.
If Not IsEmpty (.Cells (IntRow, 1)) Then ‘Объединение непустых значений в первом столбце Txt = Txt & .Cells (IntRow, 1) & «,»
End If Приведенный выше код используется для создания строки названий продуктов без учета пустых ячеек.
With Range («I12»). Validation ‘Удаление любой предыдущей проверки из ячейки .Delete’ Добавление проверки .Add _ Type: = xlValidateList, _ AlertStyle: = xlValidAlertStop, _ Operator: = xlBetween, _ Formula1: = Txt End With Приведенный выше код используется для присвоения проверки ячейке I12.
Пожалуйста, введите код ниже
Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Declaring variables Dim IntRow As Integer, IntLastRow As Integer Dim Txt As String With Worksheets("Main") 'Finding the row number of last cell IntLastRow = .Cells(Rows.Count, 1).End(xlUp).Row 'Looping from 10th row to Last row For IntRow = 10 To IntLastRow 'Creating text for validation list If Not IsEmpty(.Cells(IntRow, 1)) Then 'Concatening non blank values in the first column Txt = Txt & .Cells(IntRow, 1) & "," End If Next IntRow End With Txt = Left(Txt, Len(Txt) - 1) 'Adding validation to cell I12 With Range("I12").Validation 'Deleting any previous validation from the cell .Delete 'Adding the validation .Add _ Type:=xlValidateList, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, _ Formula1:=Txt End With End Sub
Если вам понравился этот блог, поделитесь им с друзьями на Facebook и Facebook.
Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]