我正在尝试使用以下代码来
选择先前过滤的工作表(数据库)的1列中的所有可见单元格,然后
将验证应用于所有这些可见单元格,方法是将1个动态列保存在单独的工作表中(SKU检查)。在此行:Set tbl_5 = Activesheet ....... vba返回错误9,下标超出范围。在到达此模块之前,已经对数据库工作表进行了过滤。
当前我遇到错误,因为设置tbl_5值需要对象
代码:
Sub VALIDATION_c()
Dim tbl_5 As ListObject
Dim rng As Range
Dim PH5Rng As Range
Dim Val5 As Range
Dim WS As Workbook
Sheets("Database").Select
Set tbl_5 = ActiveSheet.ListObjects("SKU Check").ListColumns(2).DataBodyRange.Select
Set rng = tbl_5.DataBodyRange.SpecialCells(xlCellTypeVisible)
Set Val5 = Sheets("SKU Check").Range("G1:G20")
Set WS = ThisWorkbook.Worksheets("SKU CHECK")
For Each tbl_5 In rng.Areas
With tbl_5.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="='" & WS.Name & "'!" & Val5.Address
End With
Next
MsgBox ("DONE VALIDATION")
End Sub
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim tbl As ListObject
Dim col1 As Range
Dim col2 As Range
Set ws1 = Worksheets("C8.-INSUMOS")
Set ws2 = Worksheets("C13.- PU")
Set tbl = ws1.ListObjects("TABLAINSUDINAMIC")
Set col1 = tbl.DataBodyRange.Columns(1).SpecialCells(xlCellTypeVisible)
Set col2 = ws2.Range("A:A")
With col1.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="='" & ws2.Name & "'!" & col2.Address
End With