【发布时间】:2012-10-09 14:38:05
【问题描述】:
我有一种情况,我正在使用两个数据验证单元格,这些单元格加载了数据表中一列(每一列)的数据。
表格
市场;监督;店铺; ....
数据验证
- cellDV1 - Table[market] 中的唯一值
- cellDV2 - Table[suprv] 中的唯一值
当用户查看工作表时,cellDV1 和 cellDV2 都预加载了各自的唯一值。
当用户从 cellDV1 中选择一个值时,它会使用所选值自动过滤 Table。然后,我想重新加载 cellDV2,并在 Table 中显示精炼结果。
我遇到的问题是它正在从表中的该列/字段加载所有唯一值,而不是自动过滤结果。
用法:
LoadDataValidation Range("Table[suprv]"), Range("cellRange")
加载数据验证:
Dim str As String
str = DistinctValues(srcrng)
Dim val As Validation
Set val = Range(destrng.Address).Validation
val.Delete
val.Add xlValidateList, xlValidAlertStop, xlBetween, str
任何想法,如何只选择过滤后的结果而不是表中的整个数据集?
【问题讨论】:
-
我没有经常使用表格,但是您可以将
SpecialCells(xlCellTypeVisible)属性应用于范围...所以Range("Table[suprv]").SpecialCells(xlCellTypeVisible)作为您在LoadDataValidation中的第一个参数 -
@ScottHoltzman 会尝试一下。过去我在 SpecialCells 上没有任何运气,在某些情况下似乎有点不一致,我似乎在 70-90% 的时间里都达到了;)
-
SpecialCells可能非常有用,如果您了解它们的工作原理、在什么情况下使用它们以及何时错误捕获它们 -
@ScottHoltzman 把它作为答案发布,这样我就可以升级并检查它
-
完成 GoldBishop。很高兴知道它成功了。
标签: excel excel-2010 validation autofilter vba