Speichern: WorksheetName als Variable

  • Word

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Sahni.

    Speichern: WorksheetName als Variable

    Ich hoffe mein Titel ist nicht zu verwirrend^^
    Ich wusste nicht genau wie ich das Problem googlen sollte, deswegen hab ich auch nix gefunden... 8|

    Also ich habe ein WordFormular und in diesem Optionbutton.
    Je nach dem welcher Button angeklickt ist, soll der Inhalt in einer ExcelDatei - in dem gleichnamigen Blatt gespeichert werden...
    Bsp: Ich hab den Button "Präsi" angeklickt, alle Daten des Formulars sollen in Excel im Blatt "Präsi" gespeichert werden.
    Der Code um die Sachen überhaupt erstmal speichern zu können hab ich schon, ich weiß nur nicht genau wie ich das umschreibe, dass das Blatt der Datei variabel ist...

    Visual Basic-Quellcode

    1. Set xlApp = New Excel.Application
    2. Set xlWB = xlApp.Workbooks.Open("H:\Marketing\Speichern.xlsx")
    3. Set xlWS = xlWB.Sheets("Tabelle1")*
    4. Dim Letzte As Long
    5. Letzte = xlWB.Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
    6. xlWB.Worksheets(1).Cells(Letzte, 1).Value = TextBoxName.Text
    7. xlWB.Worksheets(1).Cells(Letzte, 2).Value = TextBoxStraße.Text


    *Da muss ja jetzt i-wie hin, welcher OptionButton geklickt wurde, oder? :huh:

    //EDIT:

    Ich hab jetzt mal folgendes probiert:

    Visual Basic-Quellcode

    1. Set xlWS = xlWB.Sheets("xSheet")
    2. If OptionButtonPrä = True Then
    3. xSheet = Präsentationsv
    4. ElseIf OptionButtonTicket = True Then
    5. xSheet = Ticketv
    6. End if


    Wollte es eig in eine "With-Funktion" packen, sagt er mir aber bei End With "End With ohne With"
    Hab auch i-wie gelesen, dass das nicht funktioniert (???)

    Wenn ich es aber weg lasse, debuggt er mir

    Visual Basic-Quellcode

    1. Set xlWS = xlWB.Sheets("xSheet")


    als Laufzeitfehler 9 (außerhalb Index)

    -> hat vill Jemand noch ne Idee :?:

    //EDIT

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Sahni“ ()

    Wenn Du ein Tabellenblatt varibale zuweisen willst musst Du auch den Variablennamen verwenden:

    Visual Basic-Quellcode

    1. If OptionButtonPrä = True Then
    2. xSheet = Präsentationsv
    3. ElseIf OptionButtonTicket = True Then
    4. xSheet = Ticketv
    5. End if
    6. Set xlWS = xlWB.Sheets(xSheet)
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    so hatte ich das auch schon geschrieben, aber er meckert bei

    Visual Basic-Quellcode

    1. Set xlWS = xlWB.Sheets(xSheet)

    jedesmal rum von wegen laufzeitfehler 9- außerhalb indexbla...

    ich weiß nicht wie ich das dem Sheet verklickern soll, dass die Bezeichung xSheet nicht die Blattbezeichung ist, sondern eine Variable.

    Die Blätter heißen ja auch "Präsentationsv"und "Ticketv" an ner falschen Bezeichung kann es daher nicht liegen...

    Sahni schrieb:

    ich weiß nicht wie ich das dem Sheet verklickern soll, dass die Bezeichung xSheet nicht die Blattbezeichung ist, sondern eine Variable.

    In dem Du eine xSheet als Variable deklarierst.
    Du solltest Dir mal das Arbeiten mit Varibalen anschauen (z.B. galileocomputing.de openbooks).
    Des Weiteren empfehle ich Dir unter Extras Optionen im VBA Editor den Punkt Variablendeklaration erforderlich auszuwählen. Nervt zwar am Anfang ist aber langfristig besser, da man alle Varibalen explizit deklarieren muss und so auch weis, was diese machen.

    Visual Basic-Quellcode

    1. Dim xsheet as string
    2. xsheet ="irgendwas"
    3. Set xlWS = xlWB.Sheets(xSheet)

    Und schon funktionierts wenn irgendwas der Name einer existierenden Tabelle ist.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    ok, alles kla...so hatte ich das schon..aber es war mal wieder eine einzige kleine Sache warum es so nicht funktionierte...
    Biem reinschrieben habe ich natürlich vergessen die Variable ebenfalls reinzuschreiben....also es sah fälschlicherweise so aus:

    Visual Basic-Quellcode

    1. xlWB.Worksheets(1).Cells(Letzte, 1).Value = TextBoxName.Text

    Aber anstelle der "1" muss ja natürlich "xSheet" hin....meine Güte...man kann es sich auch schwer machen!^^
    Trotzdem dicken Dank an alle! ^^