【问题标题】:Use current AutoFilter to load Data-Validation使用当前的 AutoFilter 加载数据验证
【发布时间】:2012-10-09 14:38:05
【问题描述】:

我有一种情况,我正在使用两个数据验证单元格,这些单元格加载了数据表中一列(每一列)的数据。

表格

市场;监督;店铺; ....

数据验证

  • cellDV1 - Table[market] 中的唯一值
  • cellDV2 - Table[suprv] 中的唯一值

当用户查看工作表时,cellDV1cellDV2 都预加载了各自的唯一值。

当用户从 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


【解决方案1】:

我没有经常使用表格,但是您可以将SpecialCells(xlCellTypeVisible)property 应用于范围

所以 Range("Table[suprv]").SpecialCells(xlCellTypeVisible) 作为 LoadDataValidation 中的第一个参数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 2010-12-26
    • 2020-11-14
    • 1970-01-01
    相关资源
    最近更新 更多