Excel 2007 VBA - Verwenden von Sheets.Add zum Erstellen eines Diagramms am Ende einer Arbeitsmappe

9

Ich versuche, eine private Unterroutine zu implementieren, um der aktiven Arbeitsmappe ein Blatt hinzuzufügen (Blatt, das verwendet wird, damit man xlForms, xlWorksheet usw. hinzufügen kann).

Aber ich habe ein bizarres Problem damit, wo neue Diagramme relativ zu den anderen Blättern in der Arbeitsmappe erstellt werden.

Ich beginne damit, das Blatt mit dem gleichen Namen zu löschen (falls es existiert) und dann den folgenden Code zu verwenden:

%Vor%

Dabei ist sheet_type ein optionaler Parameter der enum XlSheetType und sheet_name ist ein string .

Es funktioniert völlig gut für jedes verfügbare Argument wie xlWorksheet , xlDialogSheet und sogar xl4MacroSheet - aber aus irgendeinem Grund wird die xlChart 1-Position vor dem Ende erstellt, im Gegensatz zum Making Es ist das letzte Blatt in der Arbeitsmappe.

So Probe I / O (beginnend mit nur 3 Blatt):

%Vor%

Sheets.count() gibt richtig 3 in den vorherigen Beispielen zurück (weil ich nur mit Sheets 1, 2 und 3 anfange), und sollte es daher hypothetisch nach dem dritten Blatt positionieren, aber das tut es nicht. Der Versuch, Sheets.count() + 1 nur für den Test auszuführen, gibt mir eine Array-Indexabweichung außerhalb der Bereichslaufzeit (was zu erwarten ist).

Ich habe sogar nur den Basiscode von:

getestet %Vor%

und ich bekomme immer noch das gleiche Ergebnis.

Meine Frage ist also im Grunde genommen: mache ich hier etwas falsch? Gibt es einen bestimmten Grund, warum ein Diagramm am Ende des Arbeitsbuchs nicht hinzugefügt werden kann? Oder ist das vielleicht ein Problem / Bug in VB, das behoben werden muss?

Ich verwende Office 2007, also ist es ein Fehler, der in neueren Versionen behoben wurde?

Jede Eingabe würde helfen.

BEARBEITEN: Es ist erwähnenswert, dass After:=Sheets(Sheets.count()) denselben Speicherort wie After:=Sheets(Sheets.count() - 1) erzeugt, aber nur in dem Fall, dass Type:=xlChart

BEARBEITEN 2 Das ist noch interessanter. Wenn Sie ein Diagramm erstellen, platzieren Sie es als letztes Blatt in der Arbeitsmappe und verwenden Sie den folgenden Code:

%Vor%

Excel wird die Diagramme automatisch neu ausrichten, so dass ein Arbeitsblatt zuletzt ist.

Zum Beispiel, wenn Sie:

%Vor%

und verwenden Sie den Code, erhalten Sie

%Vor%     
Bitwize 11.02.2014, 02:07
quelle

1 Antwort

3

Ok, ich bin mir nicht sicher, ob dir das weiterhilft, aber ja, es hat hier das selbe merkwürdige Verhalten, und ich konnte keinen "sauberen" Weg finden, das Blatt zu halten, also war meine Lösung:

%Vor%     
renatomt 24.02.2014, 13:02
quelle