Moin zusammen,
ich muss einen Datenexport in eine Excel Datei bewerkstelligen und möchte gerne in der Exceldatei in einem verdeckten Blatt ein paar Infos speichern, wann was zuletzt gemacht wurde. Falls dieser versteckte Reiter nicht in der Datei ist, möchte ich ihn erstellen und ans Ende verschieben.
Bis auf das Verschieben klappt auch alles. Kann mir jemand sagen, warum Excel (2016) das erstellte Blatt nicht verschiebt? Ich habe schon verschiedenes probiert und gegoogelt, aber Verschieben per ".Move" geht einfach gar nicht, an keine Position.
Set xSht = xWkb.Sheets("V_System")
If Err.Number = 438 Or Err.Number = 9 Then
Err.Clear
' Set xSht = xWkb.Worksheets.Add(After:=xWkb.Worksheets.Count)
Set xSht = xWkb.Worksheets.Add
xSht.Name = "V_System"
' xSht.Visible = xlSheetVisible
' xSht.Select
xSht.Move , xWkb.Worksheets.Count
xSht.Visible = xlSheetVeryHidden
End If
Danke für Rat und Tat...
Hallo,
die Excel-Hilfe spricht von Sheets, hinter denen verschoben werden soll, nicht von der aktuellen Sheet-Anzahl
Zitat
Ausdruck. Verschieben (Vorher, nachher)
Parameter
Name Erforderlich/Optional Datentyp Beschreibung
Before Optional Variant Das Blatt, vor dem das verschobene Blatt eingefügt wird. Sie können nicht angeben, bevor , wenn Sie _nach_angeben.
After Optional Variant Das Blatt, hinter dem das verschobene Blatt eingefügt wird. Sie können After nicht angeben, wenn Sie Before angeben.
Hallo Franz
Zitatdie Excel-Hilfe spricht von Sheets, hinter denen verschoben werden soll, nicht von der aktuellen Sheet-Anzahl
Man kann als Wert entweder den Sheet Index angeben oder aber den Namen des Blattes. Beides funktioniert nicht. Da ich aber nicht immer weiss wie das letzte Blatt heisst, wollte ich mit den Indizes arbeiten. Das erschien mir logisch.
Die meisten Anwendungsbeispiele nutzen ebenfalls den Index. Ich habe beides Versucht.
Es hat scheinbar auch nichts mit der Sichtbarkeit der Anwendung zu tun.
Ich erhalte leider nur den Fehler "1004" zurück, der besagt, dass in Excel ein Fehler aufgetreten ist, diesen aber nicht weiter spezifiziert. Die Datei ist aber nicht schreibgeschützt oder so etwas...
Hallo,
wie gesagt, es wird als Parameter ein Sheet-Objekt benötigt, keine Zahl. Das Sheet kann dann über den Namen oder den Index angesprochen werden:
xSht.Move , xWkb.Sheets(Worksheets.Count)
Hallo
habe Deinen Vorschlag probiert:
xSht.Move , xWkb.Sheets(Worksheets.Count)
Leider erfolglos - wobei nun keine Fehlermeldung mehr kommt.
Hallo,
versuch, in einer entspr. XLS-Datei ein Makro zu generieren, das ein bestimmtes Sheet an das Ende verschiebt und checke den Makro-Code..
Hmm, ich weiss auch nicht. Im Excel Direktfenster das hier eingegeben und läuft:
activeworkbook.worksheets("V_System").move ,activeworkbook.worksheets(activeworkbook.worksheets.count)
Das Makro liefert mir das hier:
Sheets("V_System").Select
Sheets("V_System").Move After:=Sheets(8)
Das .Select hatte ich vorher auch schon drinnen.
Ratlos.... :-[
Bei mir läuft dieses (ohne Verstecken):
Sub atroposX()
Dim oWS As Worksheet
If SheetExists("V_System") Then
' ggf. verschieben
If Worksheets(Sheets.Count).Name <> "V_System" Then
Worksheets("V_System").Move After:=Worksheets(Sheets.Count)
End If
Else
' erstellen
Worksheets.Add After:=Worksheets(Worksheets.Count)
Set oWS = ActiveSheet
oWS.Name = "V_System"
End If
End Sub
Function SheetExists(ByVal SheetName As String) As Boolean
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
If sh.Name = SheetName Then
SheetExists = True
Exit For
End If
Next
End Function
Ich weiss nicht warum das vorher nicht ging, aber nun geht es beim Erstellen des Sheets direkt:
Set xSht = xWkb.Worksheets.Add(After:=xWkb.Sheets(Worksheets.Count))
Danke für Eure Geduld und Hilfe.