2017-09-18 4 views
1

Ich versuche Excel haben die Anzahl der Tage zu berechnen, wenn zwei Datumsbereiche gegeben. Das Makro funktioniert eigenständig, aber ich habe Probleme, das Makro auszuführen, wenn die Zellen geändert werden, die die Daten enthalten. Dies ist der Code, den ich derzeit haben:DateDiff Kontingent bei Zellenwechsel

Public sub Worksheet_Change(ByVal Target As Range) 
    If Target.Address="$C$32" Then Sheet1.pdates 
    End If 
End Sub 

Public sub pdates() 
    Dim pdates as Integer 
    Dim pdates2 as Integer 
     pdates=DateDiff("d",[D32],[F32]) 
     pdates2=DateDiff("d",[H32],[J32]) 
     [L32]=pdates+pdates2 
End Sub 

Wenn ich Lauf drücken, werden Sie gefragt, ob ich Sheet1.pstubs ausgeführt werden soll, erlaubt aber nicht die Möglichkeit, die Worksheet_Change Code ausgeführt wird. Ich denke, ich könnte das (ByVal Target as Range) falsch verwenden. Irgendein Rat?

Vielen Dank!

+1

Welche Zellen Daten enthalten? Und wie werden diese Daten geändert? Manuell? Oder haben die Zellen Formeln? Und ist 'pdates' Sub in' Sheet1' Modul geschrieben? Es scheint auch, dass eine Formel in der Tabelle anstelle von VBA-Code funktionieren könnte. –

+0

Sie sind beide in Blatt 1 geschrieben und die Daten würden im Blatt manuell geändert werden. Der Code für pdates funktioniert, wenn ich ihn ausführe, aber ich kann ihn nicht ausführen, wenn sich das Datum in Zelle C32 ändert. – Kim

+0

'aber ich kann es nicht ausführen, wenn sich das Datum in Zelle C32 ändert -> was passiert? Haben Sie zeilenweise debuggen, um zu sehen, warum es nicht läuft? –

Antwort

2

Ich bin mir nicht sicher, warum, aber das änderte folgenden befähigten sie arbeiten:

Original:

If Target.Address="$C$32" then Sheet1.pdates 
End if 

Wechsel:

If Target.Address="$C$32" then 
Sheet1.pdates 
End if 
+0

Wenn Sie 'If Bedingte Then Action' in derselben Zeile verwenden, verwenden Sie nicht 'End if'. Wenn "End If" vorhanden ist, müssen die Aktionen auf einer neuen Zeile stehen. – danieltakeshi

+0

@danieltakeshi - Ich weiß. Ich kann nicht glauben, dass ich direkt darüber hinweggesehen habe! Lustig ist, dass meine Augen es sahen und dachten, dass es komisch aussah, aber danach habe ich nicht mehr viel nachgedacht. –

+0

Me2! = P Diese kleinen Details, die den Code bricht – danieltakeshi