VBA宏从两个日期列中减去工作日

时间:2015-10-28 06:34:20

标签: excel vba excel-vba

目前我正在尝试使用Networkdays.Intl减去两列之间两天的工作日。

但错误显示

  

对象的需要。

我需要如何解决这个问题?我实际上不确定我使用Networkday的方式.Intl是否正确。

这是我的代码:

Private Sub MinusWeekDays()
    Dim InitialRow As Long
    Dim EndRow As Long
    Dim lrow As Long

    Dim CurrentSheet As Worksheet
    Set CurrentSheet = Excel.ActiveSheet

    InitialRow = CurrentSheet.UsedRange.Cells(1).Row
    EndRow = CurrentSheet.UsedRange.Rows(CurrentSheet.UsedRange.Rows.count).Row

    For lrow = EndRow To InitialRow Step -1
        CurrentSheet.Cells(lrow, "AH").Value = NetworkDays.Intl((CurrentSheet.Cells(lrow, "W").Value), (CurrentSheet.Cells(lrow, "V").Value), (CurrentSheet.Cells(lrow, "AG").Value))
    Next lrow
End Sub

我也尝试用'11'直接替换CurrentSheet.Cells(lrow,“AG”)。值)通过做Dim intdays作为Integer,intdays = 11 coz以避免需要创建一个值为11的列但似乎失败了。

1 个答案:

答案 0 :(得分:0)

您似乎错过了致电WorksheetFunction objectNETWORKDAYS.INTL function。我已将重复调用工作表移到周围的With ... End With statement

WITH CurrentSheet
    For lrow = EndRow To InitialRow Step -1
        .Cells(lrow, "AH").Value = WORKSHEETFUNCTION.NetworkDays_Intl(.Cells(lrow, "W"), .Cells(lrow, "V"), 11)
    Next lrow
END WITH

对于每一行,您不能只在第三个参数而不是.Cells(lrow, "AG")中添加数字的周末类型是否真的不同?查看NETWORKDAYS.INTL function的官方文档,确保提供正确的参数。