VBA Globale Variable dauerhaft speichern
#1
Hey Leute ich habe mal eine Frage.

Ich bin relativ unerfahren in VBA, besonders was Variablen angeht.

Mein Ziel ist es anhand des Integers x zu ermittel wie viele Zeilen in der Tabelle erzeugt wurden (X Erzeugt in Anhang 1).
Falls Zeilen durch "Verladung Material" oder "Zeile neu" hinzugefügt werden (siehe Anhang 3), soll der Integer um die jeweilige Anzahl der neu hinzugefügten Zeilen addiert werden (siehe Anhang 2).
Bei "Zeile neu" wird eine neue Zeile erzeugt und x um eins hochgestuft (siehe Anhang 2).
Jedoch wird der Wert nicht gespeichtert und, falls eine weitere Zeile erzeugt wird steht in der MsgBox nicht 2, sondern 1.
Wie kann man also den Wert von X ab Öffnen der Exceltabelle dauerhaft speichern?

Noch zwei Fragen:
Wie kann man mit x bei dem Befehl Rows arbeiten? (So funktioniert das auf jeden Fall nicht: [Rows("18:18"+x).select] und in die nächste Zeile dann [Selection.Delete Shift:=xlUp])
Kann man auch mit x arbeiten, wenn die neu erzeugten Zeilen im wechsel gefärbt werden sollen? Heißt, die ungeraden Reihen sollen dann in grau gefärbt werden und die geraden Reihen sollen farblos sein.

Ich freue mich auf Ihre Rückmeldung! Falls wichtige Informationen fehlen, werde ich diese natürlich schnellstmöglich nachreichen.
Vielen Dank für Ihre Mühen im Voraus und bleiben Sie gesund.

MFG

Nils


Angehängte Dateien Thumbnail(s)
           
Top
#2
Hi,

1. eine globale Variable musst du in einem Modul definieren, also "Modul1", "Modul2", .... Dann kannst du in jedem anderen Modul, einschließlich der Tabellenmodule darauf zugreifen. Umgekehrt geht das nicht.

2. Um ganz eng an deiner Fragestellung zu bleiben:
Code:
Rows((18 + x) & ":" & (18 + x)).Select

3. Das machst du am besten über eine bedingte Formatierung, vgl. hier: Link
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Top
#3
Hallo Nils,

wenn du dich ernsthaft mit VBA beschäftigen möchtest, solltest du als erstes die Select-Anweisung ganz schnell vergessen. Die ist so überflüssig wie ein Kropf. Die letzte gefüllte Zeile kann man per VBA abfragen, falls das dein Plan ist.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#4
Hey Leute, vielen Dank für eure Rückmeldung! Das mit den Farben habe ich sogar hinbekommen :19:
Wie ich bemerkte, habe ich mich viel zu sehr darauf fixiert das Problem mit X zu lösen  :16:
Ja, ich habe auch gemerkt, dass ich starken Nachholbedarf bei VBA Grundlagen habe. Bisher konnte ich viele Kleinigkeiten schnell lösen, aber ich bin jetzt doch nochmals auf eure Hilfe angewiesen.
Ich bin endlich so weit, dass mir schon einmal keine Fehlermeldung angezeigt wird, jedoch gibt die msgbox mir keinen Wert aus. Deshalb die Frage kann man das so machen wie im Anhang zu sehen oder bin ich ganz und gar auf dem falschen Dampfer?
Kurze Info noch. Die VBA Befehle geschehen im Montagebegleitschein. Die Tabelle, in der ich Eintragungen zu evtl. neuen Artikeln vornehme geschehen im Zwischenspeicher (siehe Excel 1)
Danke schon einmal für eure Hilfe.

LG Nils


Angehängte Dateien Thumbnail(s)
           
Top
#5
Hallo Nils,

du wirst wohl nicht um eine kleine Beispieldatei mit ein paar fiktiven Daten umhinkommen. Zeige darin am besten auf, wo du was hinhaben möchtest (Tabellenblatt, Zeile, Spalte), eventuell ergänzt mit manuellen Kommentaren und/oder Zeichnungsobjekten, die dir Excel zur Verfügung stellt (Pfeile, Formen, Legenden, Callouts usw.). Mit Bildern (Screenshots oder Teilen davon) kommst du hier meistens nicht weit, weil wohl nachvollziehbar ist, dass Helfer Beispieldateien nicht selber erstellen.

Anhand deiner Beschreibungen und der Teilansichten deines VBA-Codes kann ich nicht nachvollziehen, was du möchtest.
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Top
#6
Hallöchen,

Du verwendest eine Variable als auszugebende Meldung. Vermutlich steht in der Variable noch nix drin. Public … zur Deklaration von Variablen verwendet man außerhalb der Makros, möglichst auch mit einem passenden Typ, im Prinzip:

Option Explicit
Public MeineVariable As String

Sub Makro1()
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste