我有一個列表驗證,我在Excel VBA中創建,它基於一組範圍內的一組數據。然後我想用第二範圍數據中的一組數據添加到列表中。我認爲修改功能可能會起作用,但我在列表中收到的是第一個範圍內的數據。Excel VBA附加驗證列表
我在工作表上有一個列表,我指的是構成範圍。該範圍有一個WCGroupName列和一個包含唯一數據的列。
例如左側的列是基團上,經分離的右列 - 是列表:
GROUP - LIST
擠出機 - 10- EXTRUDER
擠出機 - - 15 80 EXTRUDER
MOUNT - 20-MOUNTER
PRESS - 30-PRESS BONARDI
底側 - 42-BOTTOMSEAL
底側 - 72-SIDEWELD BOTTOMPUNCH - 73- SIDEWELD2
BOTTOMSEAL - 40 BOTTOMSEAL
便門 - 60便門
便門 - 62便門
我想驗證列表顯示在列表中的4項。下面只代碼示出了第一2.我基本上試圖附加列表,以便它顯示
42 BOTTOMSEAL,72-SIDEWELD,73-SIDEWELD2,40 BOTTOMSEAL
在下拉列表中。此代碼位於另一個循環中,該循環遍歷所有WCGROUPNAME並創建多個驗證列表。但是,我需要在工作表br上爲單元格B23分配的驗證列表添加,然後添加。
讓我知道這是否可能。
我已修改我的代碼插入以顯示我正在做的更廣泛的範圍。 GetUniqueWCGroup是一個創建管道列表的函數。
'This section will create the list lookups for each WC type
WCGroup = GetUniqueWCGroup()
WCGroupArray = Split(WCGroup, "|")
'Create a report for each team
For Each tmp In WCGroupArray
WCGroupName = CStr(tmp)
wg = WCGroupName
'identify last row for the group
wc.Activate
frwg = lrwg + 1
lrwg = xlLastRowWCGroup(wg)
If WCGroupName = "MOUNT" Then
Set l = br.Range("B21:B21")
Set R = wc.Range("B" & frwg & ":B" & lrwg)
With l.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="='" & wc.Name & "'!" & R.Address
End With
End If 'WCGroup Mounter
If WCGroupName = "PRESS" Then
Set l = br.Range("B22:B22")
Set R = wc.Range("B" & frwg & ":B" & lrwg)
With l.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="='" & wc.Name & "'!" & R.Address
End With
End If 'WCGroup Press
If WCGroupName = "BOTTOMSEAL" Or WCGroupName = "BOTTOMSIDE" Then
If bc = 1 Then
Set l = br.Range("B23:B23")
Set R = wc.Range("B" & frwg & ":B" & lrwg)
With l.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="='" & wc.Name & "'!" & R.Address
End With
bc = bc + 1
Else
Set l = br.Range("B23:B23")
Set R = wc.Range("B" & frwg & ":B" & lrwg)
With l.Validation
'.Delete 'delete previous validation
.Modify Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="='" & wc.Name & "'!" & R.Address
End With
End If
End If 'WCGroup BottomSeal or BottomSide
If WCGroupName = "WICKET" Then
Set l = br.Range("B24:B24")
Set R = wc.Range("B" & frwg & ":B" & lrwg)
With l.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="='" & wc.Name & "'!" & R.Address
End With
End If 'WCGroup Wicket
If WCGroupName = "BOTTOMSIDE" Then
Set l = br.Range("B25:B25")
Set R = wc.Range("B" & frwg & ":B" & lrwg)
With l.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="='" & wc.Name & "'!" & R.Address
End With
End If 'WCGroup BottomSide
If WCGroupName = "SLITTER" Then
Set l = br.Range("B26:B26")
Set R = wc.Range("B" & frwg & ":B" & lrwg)
With l.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="='" & wc.Name & "'!" & R.Address
End With
End If 'WCGroup Slitting
If WCGroupName = "PERFORATOR" Then
Set l = br.Range("B27:B27")
Set R = wc.Range("B" & frwg & ":B" & lrwg)
With l.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="='" & wc.Name & "'!" & R.Address
End With
End If 'Perforator
If WCGroupName = "OP" Then
Set l = br.Range("B29:B29")
Set R = wc.Range("B" & frwg & ":B" & lrwg)
With l.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="='" & wc.Name & "'!" & R.Address
End With
Set l = br.Range("B30:B30")
Set R = wc.Range("B" & frwg & ":B" & lrwg)
With l.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="='" & wc.Name & "'!" & R.Address
End With
Set l = br.Range("B31:B31")
Set R = wc.Range("B" & frwg & ":B" & lrwg)
With l.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="='" & wc.Name & "'!" & R.Address
End With
Set l = br.Range("B32:B32")
Set R = wc.Range("B" & frwg & ":B" & lrwg)
With l.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="='" & wc.Name & "'!" & R.Address
End With
End If 'OP
Next
謝謝您的輸入。但它不能解決我的問題。名單的發展是脫節的。也就是說,我有一組列表,這是創建我的第一個循環。我的第一個循環是代表一系列數據的WC組。然後,我將該範圍應用於驗證列表。更進一步,我還有另一個範圍,但是我想將該範圍附加到已經定義的驗證列表。 – 2014-12-03 20:44:43
如果您已經在單元格中有** DV **,請將* Formula1 *拖入一個字符串變量中。如果字符串是一個簡單的* css *然後追加到它。如果字符串是一個涉及工作表單元格的實際公式,那麼抓住這些單元格的內容並追加。 – 2014-12-03 21:13:18
在另一個問題中,有人建議使用union聲明來加入範圍。這是訣竅,我完成了。 – 2014-12-03 21:31:09