Microsoft ExcelでVBAを使用して、空のセルを無視して検証リスト
この記事では、ワークシートの選択変更イベントを使用して、空白の値を無視して検証リストを作成します。
生データは、製品名と列Aの空白セルで構成されます。
空白のセルを無視して、製品名の検証リストを作成します。
ロジックの説明
この記事では、ワークシートの選択変更イベントを使用して、セル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]までご連絡ください