この記事では、ワークシートの選択変更イベントを使用して、空白の値を無視して検証リストを作成します。

生データは、製品名と列Aの空白セルで構成されます。

ArrowMain

空白のセルを無視して、製品名の検証リストを作成します。

ArrowRawData

ロジックの説明

この記事では、ワークシートの選択変更イベントを使用して、セルI12に検証を作成しました。まず、空白のセルを無視して、コンマで区切られたすべての製品名で構成される文字列を作成します。次に、セル検証のためにこの文字列を追加します。

コードの説明

IntLastRow = .Cells(Rows.Count、1).End(xlUp).Row上記のコードは、最後のセルの行番号を取得するために使用されます。

If Not IsEmpty(.Cells(IntRow、1))Then ‘最初の列の空白以外の値の連結Txt = Txt&.Cells(IntRow、1)& “、”

上記のコードを使用して製品名の文字列を作成し、空白のセルを無視します。

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]までご連絡ください