2014-10-20 3 views
2

열이 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 
+2

무엇을 얻고 있습니까? 소스 코드의 닫는 괄호가 NETWORKDAYS 행에 없습니다. – ariscris

+0

datestamp는 예상대로 작동하지만 네트워크 날 부분은 – WKI

+0

입니다. 점검해야하는 여분의'End Sub'를 제외하고 들여 쓰기를 편집했습니다. 화면에 '하위'가 두 개있는 '하위'를 볼 수 없습니다. – hynekcer

답변

1

내가 당신의 들여 쓰기를 정리하면 당신 "는이 꽤 분명 에서 VBA

Sub dural() 
    Dim d1 As Date, d2 As Date, wf As WorksheetFunction 
    Dim N As Long 
    Set wf = Application.WorksheetFunction 
    d1 = DateValue("1/1/2014") 
    d2 = DateValue("12/31/2014") 
    N = wf.NetworkDays(d1, d2) 
    MsgBox N 
End Sub 
0

NETWORKDAYS()를 사용하는 방법입니다 End Sub ""Worksheet_Change "하위"If "문 중간에. 포맷팅은 이런 종류의 것을 잡는 데 도움이됩니다.