【问题标题】:Excel VBA Union Rows with date value >= Date日期值> =日期的Excel VBA联合行
【发布时间】:2016-09-29 16:20:18
【问题描述】:

我正在尝试编写一个宏,如果该行中的日期单元格(H 列)大于或等于当前日期,则该宏会使用某个范围内的行填充电子邮件。

下面的代码用看似随机的行填充了一封电子邮件。

Dim rng As Range
Dim row As Range
Dim rng2 As Range

Set rng = Range("B52:I79")

For Each row In rng.Rows
    If row.Columns("H") >= Date Then
        If Not rng2 Is Nothing Then
            Set rng2 = Union(rng2, row)
        Else
            Set rng2 = row
        End If
    End If
Next

任何帮助都会很棒!

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    不要使用范围内的字母来引用列,而是使用数字。这样他们就相对更明显了。

    h 列从 b 到 i 的范围实际上将返回 i... 将其称为第 7 列,您会得到不那么令人困惑的结果。

    另外,要调试它,单步调试代码并将匹配结果发送到除 union 命令之外的变量。

    这样每次匹配时您都可以在本地窗口中看到,并且可以确保您要匹配的信息就是正在匹配的信息。

    【讨论】:

      【解决方案2】:

      由于您的范围从 B 列开始,如果您的日期在 H 列中,那么您需要将其称为 G 列,如下所示:

      Dim rng As Range
      Dim row As Range
      Dim rng2 As Range
      
      Set rng = Range("B52:I79")
      
      For Each row In rng.Rows
          If row.Columns("G") >= Date Then
              If Not rng2 Is Nothing Then
                  Set rng2 = Union(rng2, row)
              Else
                  Set rng2 = row
              End If
          End If
      Next
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 2020-02-19
        • 1970-01-01
        • 2013-11-17
        • 2015-08-31
        • 2018-10-27
        • 1970-01-01
        相关资源
        最近更新 更多