我已經創建了一個子部分,用於檢查列F
中是否發生了更改,並將時間戳記寫入列G
中的相應單元格。我如何通過查找H列中的時間戳和包含一週開始日期A1
的單元格之間的差異來編輯此子網以返回列H
中的網絡天數?沒有VBA,公式是=ABS(NETWORKDAYS(A1, B1) - SIGN(NETWORKDAYS(A1, H1))
。以下是我的代碼到目前爲止。任何幫助?使用NETWORKDAYS的Excel VBA
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, c As Range
Application.EnableEvents = False
With Target
'check if change happened in column F
If .Column = 6 Then
'check if changed value is X
If Not IsEmpty(c) Then
'add datestamp if it is
Cells(.Row, 7).Value = Format(DateTime.Now, "yyyy-MM-dd hh:mm:ss")
Cells(.Row, 8).Value = ABS(NETWORKDAYS(G5,H2)-SIGN(NETWORKDAYS(G5,H2)
Else
'clear datestamp and Column H if not
Cells(.Row, 7).Value = ""
Cells(.Row, 8).Value = ""
End If
End If
End With
Application.EnableEvents = True
End Sub
'
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, c As Range
Dim d1 As Date, d2 As Date, wf As WorksheetFunction
Dim N As Long
Set wf = Application.WorksheetFunction
Application.EnableEvents = False
With Target
'check if change happened in column F
If .Column = 2 Then
'check if changed value is X
If Not IsEmpty(c) Then
'add datestamp if it is
d1 = Cells.Range("A1")
d2 = Cells.Range("B1:B2")
N = wf.NetworkDays(d1, d2)
Cells(.Row, 4).Value = N
Else
'clear datestamp and Colunm H if not
Cells(.Row, 4).Value = ""
End If
End If
End With
Application.EnableEvents = True
End Sub
你在做什麼?您的源代碼在NETWORKDAYS行中沒有匹配的右括號。 – ariscris 2014-10-20 13:28:12
datestamp按預期工作,但網絡時間部分不是 – WKI 2014-10-20 14:20:42
我編輯了縮進,除了應檢查的額外'End Sub'外。你不可能在屏幕上看到兩個'Sub'和'End Sub'。 – hynekcer 2014-10-20 18:41:53