【问题标题】:Overflow and Mismatch Error溢出和不匹配错误
【发布时间】:2017-03-19 07:00:41
【问题描述】:

我有一个 For 循环,它一直运行到出现空白单元格为止。 A 列是自定义格式的数据。我正在尝试运行每周(周一至周五)报告。

42738 返回 2017 年 1 月 3 日

42739 返回 2017 年 1 月 4 日

42740 返回 2017 年 1 月 5 日

等等

我想弄清楚如何设置范围值来创建这个每周报告。

我测试的理论是 A3 - A2 = 1,这是周一到周二等,

如果 A3 - A2 = 2 则表示周末。

这是我到目前为止的代码

Dim wks As Worksheet
Dim LastDate As Long
Dim myDate As Integer

Set wks = Worksheets("Labor")
LastDate = wks.Cells(wks.Rows.Count, "A").End(xlUp).Row

For dRow = 2 To LastDate

    xDate = CInt(Cells(dRow, "A").Value)
    yDate = CInt(Cells(dRow - 1, "A").Value)

    If xDate - yDate = 2 Then
        'weekend
        MsgBox ("Weekend!")

    ElseIf xDate - yDate = 1 Then
        'next day        
    ElseIf xDate - yDate = 0 Then
        'same day       
    Else
        MsgBox (xDate - yDate)

    End If


    myDate = 1

Next dRow

我的问题是:

如何修复 xDate= 的溢出错误?

为什么 yDate= 出现不匹配错误?

有没有更简洁的写法?

提前致谢!

【问题讨论】:

  • 将 myDate 变暗

标签: vba date row cell


【解决方案1】:

假设 A 列中的日期值是数字格式(如您在帖子中提到的 42738、42739 等),那么下面的代码将为您提供所需的内容。

您不需要将日期值存储在变量中的单元格中,您可以使用DateDiff函数直接计算每2个单元格之间的差异。要了解有关DateDiff 的更多信息,请阅读HERE

之后,您可以将Select Case 用于您想要检查的每种场景。

代码

Option Explicit

Sub NumofWeekdays()

Dim wks             As Worksheet
Dim LastDate        As Long
Dim NumofDays       As Long
Dim dRow            As Long

Set wks = Worksheets("Labor")    
With wks
    LastDate = .Cells(.Rows.Count, "A").End(xlUp).Row

    For dRow = 2 To LastDate
        NumofDays = DateDiff("d", .Range("A" & dRow - 1).Value, .Range("A" & dRow).Value)                          
        Select Case NumofDays
            Case Is >= 2
                'weekend
                MsgBox "Weekend!"

            Case 1
                'next day
                MsgBox "Next Day"

            Case 0
                'same day
                MsgBox "Same Day"

            Case Else
                MsgBox NumofDays

        End Select
    Next dRow
End With

End Sub

【讨论】:

  • 我可以使用 DateDiff 函数了!非常感谢您!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
相关资源
最近更新 更多