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

Исходные данные состоят из названия продукта и нескольких пустых ячеек в столбце A.

ArrowMain

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

ArrowRawData

Логическое объяснение

В этой статье мы использовали событие изменения выбора рабочего листа для создания проверки в ячейке 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]