列出对象并结合先前过滤的单元格上的单元格验证

问题描述 投票:0回答:2

我正在尝试使用以下代码来

  1. 选择先前过滤的工作表(数据库)的1列中的所有可见单元格,然后

  2. 将验证应用于所有这些可见单元格,方法是将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
excel vba excel-vba
2个回答
0
投票
您的代码中有几个问题:

0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.