Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Excel Sheet ans Ende stellen funktioniert nicht

Begonnen von atropos, November 19, 2019, 10:02:30

⏪ vorheriges - nächstes ⏩

atropos

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...
Gruss
atropos

DF6GL

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.








Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

atropos


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...
Gruss
atropos

DF6GL

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)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

atropos


Hallo

habe Deinen Vorschlag probiert:

xSht.Move , xWkb.Sheets(Worksheets.Count)

Leider erfolglos - wobei nun keine Fehlermeldung mehr kommt.

Gruss
atropos

DF6GL

Hallo,

versuch, in einer entspr. XLS-Datei ein Makro zu generieren, das ein bestimmtes Sheet an das Ende verschiebt und checke den Makro-Code..
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

atropos


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....  :-[
Gruss
atropos

ebs17

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
Mit freundlichem Glück Auf!

Eberhard

atropos


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.
Gruss
atropos