我有一个列表验证,我在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