【问题标题】:Restricting a Set Range in Excel VBA based on an if condition基于if条件限制Excel VBA中的设置范围
【发布时间】:2020-02-12 00:10:09
【问题描述】:

我想在 Excel VBA 中设置一个范围,以便稍后对其进行寻址,将其转换为 HTML 并将其粘贴到电子邮件中。一般来说,这一切都适用于以下几行(仅在我定义范围的地方):

Set MySheet = ExeWb.Sheets("Sheet1")
Set rng = MySheet.Range("A6:L17").SpecialCells(xlCellTypeVisible)

稍后,我使用函数“RangetoHTML(rng As Range)”将其粘贴到电子邮件正文中。像魅力一样工作(取自这里:https://www.rondebruin.nl/win/s1/outlook/bmail2.htm)。

但是,我想将范围限制为仅包含与 F 列中的字符串“AAA”或“BBB”匹配的行。不应包含所有其他行 - 但不要删除!

【问题讨论】:

  • 有很多方法可以做到这一点,有些比其他更实用,有些比其他更有效。可以说,最简单和最快的方法是根据您的标准过滤列 F 并将范围设置为可见单元格(就像您所做的那样)。或者,您可以逐行循环并测试列中的每个单元格,或者使用 Union 动态构建一个范围,或者创建并连接一个您转换为范围的字符串,或者创建一个行数组,或者大约十几个同一概念的其他变体。两种策略都不会删除任何内容。

标签: excel vba range


【解决方案1】:

确实是一个简单的解决方案,正如 ProfoundlyOblivious 建议的那样,在之前设置一个自动过滤器:

MySheet.Range("A6:L17").AutoFilter Field:=1, Criteria1:="=AAA"

仅在范围内包含可见字段的限制将完成其余的工作。

要选择更多过滤器,您只需添加它们:

MySheet.Range("A6:L17").AutoFilter Field:=1, Criteria1:="=AAA", Operator:=xlOr, Criteria2:="=BBB"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-15
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    相关资源
    最近更新 更多