簡體   English   中英

網絡日功能不適用於 vba

[英]networkdays function not with vba

我正在構建一個日期斷路器,我需要計算不包括銀行假期的工作日。 我在 vba 中使用了 netwokingday 函數,但它似乎沒有選擇銀行假期的命名范圍。 這是我的一段代碼:

    For i = 2 To new_Endrow
    begin = Range("F" & i)
    finish = Range("G" & i)

    If finish <> "" Then

     Range("H" & i) = Application.WorksheetFunction.NetworkDays(begin, finish, UKholidays)

    End If


Next

在此處輸入圖片說明

請記住,“開始”和“結束”是短日期,而 UKholidays 是名稱范圍,它僅選擇顯示的表格的第一列,不包括標題。 當我在工作表中使用與普通單元格函數相同的函數而不是使用 VBA 的代碼時,它使用相同的語法完美地工作(=NETWORKDAYS(A1,B1,UKholidays),顯然 A1 和 B1 分別是“開始”和“結束”)

我建議進行以下更改,而不是現有。

Cells(i, "H").Value = Application.WorksheetFunction.NetworkDays(begin, finish, Range("UKholidays"))

如果計算行數或列數,則使用語法Range("H" + i)會很麻煩。 如果Cells([Row], [Column])是解決單個單元Cells([Row], [Column])的首選方法。 VBA 將接受字符串格式的列,如Cells(i, "H")但顯然,這必須轉換為Cells(i, 8)因為 Excel 使用數字,而不是字符串。

此外,我希望你解決Value財產,如果你指的是Value屬性。 這是默認設置,如果省略它,Excel/VBA 將“理解”。 問題是Cells(i, 8) ,范圍和Cells(i, 8) ,它的值,對來說是無法區分的,當 Excel 沒有理解你想要的意思時,你會感到困惑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM