2017-04-12 4 views
1

Ich frage mich, warum mein Code nichtautomatisch aktualisiert Diagramm in VBA

Sheets("Chart").Activate 

FinalRow = Cells(Rows.Count, 1).End(xlUp).Row 

Range("A" & Rows.Count).End(xlUp).Offset(1).Value = Date 

For i = 2 To FinalRow 
    If Cells(i, 1).Value = Date Then 
     Cells(i, 2).Value = Sheets("Main Sheet").Range("D2").Value 
     Cells(i, 4).Value = Sheets("Main Sheet").Range("D3").Value 
    End If 
Next i 

Die Schleife erscheint Arbeits den Datumswert in Spalte A platziert zu ignorieren bin ich etwas fehlt?

+2

Sie sollten alle Ihre 'Zellen()' mit einem Arbeitsblatt-Objekt qualifizieren, da sie sich auf die aktive Standard Blatt. –

+1

Auch Qualität der 'Rows.Count' mit dem Blatt, auf dem die Zeilenanzahl erwartet wird. – BruceWayne

+0

Genau genommen brauchen Sie die Verweise auf Zellen und Zeilen nicht zu qualifizieren, nachdem Sie das Blatt, an dem Sie gerade arbeiten, aktiviert haben. Es wird keinen Unterschied machen, wie Ihr Code funktioniert. Es ist jedoch eine bessere Vorgehensweise, da Code einfacher zu lesen und sicherer ist, da Sie nicht immer sicherstellen müssen, dass das richtige Blatt aktiv ist, wenn Sie Änderungen am Code vornehmen. Wenn Sie die Blätter nicht aktivieren müssen, wird auch die Leistung verbessert. – Michael

Antwort

0

Sie bestimmen FinalRow, bevor Sie das Datum in die darunter liegende Zelle einfügen. Die For-Schleife stoppt bei FinalRow, also vor Erreichen der Zelle mit dem hinzugefügten Datum.

Sie müssen entweder das Datum einzustellen, bevor die FinalRow Bestimmung oder Schleife i von 2 bis FinalRow + 1

Verwandte Themen