2
ゴール自動入力セル - VBA
私は、3枚(私は1つで始めている)をループしたい列Cに、特定のタイプを探し、自動的に移入う列DのIn-cellドロップダウン(Data Validation設定にあるものに似ています)が自動的に挿入されます。In-cellドロップダウンでは、すべてのタイプの値がリストされますが、Typeに属する値でオートポピュレートする必要があります。
通報
以下のコード、すなわちタイプ1の、同じ値を持つすべてのセル内のドロップダウンリストを移入アイテム1 - アイテム2 - ITEM3 - ITEM4。
どのようにすべての値をリストするのか、同時にセルをオートポピュレートする方法はわかりません。
所望の出力
コード
簡単のため、私は以下のコードで二つの第一タイプを追加しました。
Sub AutoDropdown()
Dim PersonSource As Range
Dim PersonSourceTotal As Range
Dim PersonCell As Range
'Dim ws As Worksheet
Dim i As Integer
Dim lastRow As Integer
Set PersonSourceTotal = Sheets("Sheet1").Range("D2:D200")
With PersonSourceTotal.Offset(0, -2)
lastRow = .Cells(.Rows.Count, PersonSourceTotal.Columns.Count).End(xlUp).Row
End With
Set PersonSource = Sheets("sheet1").Range("D2:D" & lastRow)
On Error Resume Next
For Each PersonCell In PersonSource
Name = PersonCell.Offset(0, -3)
ID = PersonCell.Offset(0, -2)
If Name <> "" And ID <> "" Then
For i = 0 To lastRow
If PersonCell.Offset(i, -1) = "Type1" Then
arr1 = Array("Item1", "Item2", "Item3", "Item4")
arr1Merged = Join(arr1, "--")
With PersonCell.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:=arr1Merged
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
ElseIf PersonCell.Offset(i, -1) = "Type2" Then
arr2 = Array("Item5", "Item6", "Item7", "Item8", "Item9")
arr2Merged = Join(arr2, "--")
Debug.Print (arr2Merged)
With PersonCell.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:=arr2Merged
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
Next i
Else
MsgBox "Remember to add Name and ID"
End If
Next PersonCell
End Sub
Hey Xabier私はdiasgree :)私は確かめるために再度テストしました。セルは自動集計されず、Type1(Item1 - Item2 - Item3 - Item4)の値のみが表示されます。 – Saud
これは、データ検証の式で行うことができます。 http://www.contextures.com/xlDataVal02.htmlリンクを参照してください。私はその方法を試してみると、私は数式を提供することができます。 –
@Saud私は自分の答えを更新しました。意図したとおりに動作するかどうかを教えてください。 – Xabier