ここは始まりです。私は、項目のリストがB1からB1000のいずれかのSheet2にあると仮定します。大丈夫です。範囲が部分的にしか満たされていない場合(お客様のニーズに合わせて1000を調整してください)
コードはこのリストをスキャンし、DV文字列を作成します。データの検証は、次の使用例は、シート1セルC5に適用されます:あなたは* * VBAに慣れ
Sub setupDV()
Dim rSource As Range, rDV As Range, r As Range, csString As String
Dim c As Collection
Set rSource = Sheets("Sheet2").Range("B1:B1000")
Set rDV = Sheets("Sheet1").Range("C5")
Set c = New Collection
csString = ""
On Error Resume Next
For Each r In rSource
v = r.Value
If v <> "" Then
c.Add v, CStr(v)
If Err.Number = 0 Then
If csString = "" Then
csString = v
Else
csString = csString & "," & v
End If
Else
Err.Number = 0
End If
End If
Next r
On Error GoTo 0
'MsgBox csString
With rDV.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=csString
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = False
End With
End Sub
です?? –
@ Garyのスチューデント私は確かです。それを行うのが最善の方法だと思いますか?あなたは私にそのようにする方法に関するいくつかのガイダンスを教えてもらえますか? – GiANTOnFire