UForms - Idee zur Def. Variabeln ?
27.01.2022 15:20:28
pbaer007
ich habe eine UF für die Neuanlage eines Datensatzes und eine weitere UF zur Änderung bestehender Datensätze.
Diese beiden UFs gibt es dann noch einmal mit geänderten Aufbau für eine andere Datensatzgruppe.
Also z.Bsp. Neuanlage & Änderung für "Autos" + Neuanlage und Änderung für "Schiffe"
Da unterschiedliche Daten geführt werden, werden diese auf unterschiedlichen Excel-Tabellen gespeichert.
In der Arbeitsmappe gibt es eine StammdatenBlatt ("BaseData") auf dem alle txt / opt / lst / cob Steuerelemente (Spalte U) aufgelistet sind und die entsprechenden ZielSpalten der unterschiedlichen Datenblätter in den Spalten V-X gelistet sind. Im Idealfall sollten sich diese nicht mehr ändern, aber zur Sicherheit sind die über eine Vergleichsformel gesteuert. BEISPIEL:
Auf allen UF gibt es z.Bsp das Textfeld "txtDateExit".
Auf dem Stammdatenblatt sind dies die Listeneinträge dafür
Spalte "U" =txtDateExit
Spalte "V" = 23
Spalte "W" = 6
Spalte "X" = 10
Damit es einfacher ist die Spalten zu kontrollieren und an zu passen (wenn nötig), hatte ich überlegt in einem Public Modul Const-Variablen zu belegen.
Beispiel:
Public Const EmpDestinCol_txtDateExit As Single = 23
Public Const FLsDestinCol_txtDateExit As Single = 6
Public Const BdwDestinCol_txtDateExit As Single = 10
So wollte ich sicherstellen, dass beim Abspeichern der Daten auch wirklich die richtigen Spalten verwendet werden.
Je nachdem auf welchem UF der User den Steuerbutton "Speichern" anklickt wird die entsprechende Zieladresse ausgewählt. Beispiel:
cells(DestinRow, empAdrCol_txtDateExit) = UF_Name.txtDateExit
cells(DestinRow, FLsAdrCol_txtDateExit) = UF_Name.txtDateExit
cells(DestinRow, BdwAdrCol_txtDateExit) = UF_Name.txtDateExit
Nun erscheint mir diese Lösung aber doch sehr aufwendig um 20 Text-Felder mit je 3 verschiedenen ZielSpalten zu belegen,
zu mal bei Änderung der Spalte die Variablenbelegung manuell geändert werden muss und auch vergessen werden könnte.
Ich hatte überlegt über eine Schleife die Variablen zu belegen, aber geht das überhaupt?
Beispiel: Public Const EmpDestinCol_txtDateExit As Single = 23
Einträge auf dem StammdatenBlatt:
BaseData.Spalte 21 = txtDateExit
BaseData.Spalte 25 = 23
Also "irgendwie" so, war meine Idee.....
For w = 2 To EoColums
If IsEmpty(BaseData.Cells(w, 21).Value) = False Then
"Public Const EmpAdrCol_" & BaseData.cells(w,21).value & "as Single" = BaseData.cells(w,25).value
End If
Next
Dass es SOOO nicht funktioniert hat mir Excel schon mitgeteilt, nur wüsste ich auch nicht wie man das dann schreiben müsste
Darum wollte ich an dieser Stelle mal nach Input von Profis fragen, was - wenn die Idee nicht totaler Blödsinn ist - da die beste Vorgehensweise wäre.....
Ich sag schon mal vielen Dank für richtungsgebende Meinungen / Ideen
Gert