Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1864to1868
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

UForms - Idee zur Def. Variabeln ?

UForms - Idee zur Def. Variabeln ?
27.01.2022 15:20:28
pbaer007
Hallo zusammen,
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

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UForms - Idee zur Def. Variabeln ?
27.01.2022 16:01:54
Beverly
Hi Gert,
ich weiß nicht, ob ich dein Anliegen richtig verstanden habe. Versuche es mal so: schreibe die Spaltennummer aus deiner Liste im Initialize-Ereignis des betreffenden UserForms in einer Schleife in die Tag-Eigenschaft jedes Steuerelements. Dann kannst du sie beim Speichern der Daten daraus abrufen. Beachte aber, dass die Inhalte der Tags Texte sind, nimm also folglich als Spaltennummer CInt(Steuerelement.Tag).
Bis später
Karin

AW: UForms - Idee zur Def. Variabeln ?
27.01.2022 17:14:46
pbaer007
Hallo Karin,
schon mal vielen Dank für die Rückmledung. Das ist genau die richtige Lösung. SUPER ! Funktioniert bestens.
Eine zusätzliche Frage:
Kann ich auch den Namen des entsprechenden Feldes aus der Liste nehmen?
Wie muss ich die Variable deklarieren, dass ich diese an stelle des Namens verwenden kann? Beispiel
For ReadRow = 2 to "Ende".
1. Schritt
varFieldName = Cells(ReadRow,2)
somit ist die Variable varFieldName = "txtHausNr"
2. Schritt
Me.varFieldNamet.Tag = Cells(ReadRow,4)
was bedeuten sollte Me.txtHausNr.Tag = Cells(ReadRow,4)
next ReadRow
Später würde dann der Wert des Feldes "txtHausNr" in eine Tabelle geschrieben
Cells(DestinRow,CInt(Me.txtHausNr.Tag)) = Me.txtHausNr.value
Gert
Anzeige
AW: UForms - Idee zur Def. Variabeln ?
27.01.2022 18:16:49
Beverly
Hi Gert,
meinst du, wie du das Steuerelement im UserForm ansprechen musst? So: Me.Controls(varFieldName)
Bis später
Karin

AW: UForms - Idee zur Def. Variabeln ?
28.01.2022 10:12:13
pbaer007
Hallo Karin,
sorry, konnte das gestern nicht mehr ausprobieren. Ja, dies war genau der nötige Tipp!
Was ich nicht alles an wilden Kombinationen ausprobiert habe....
Aber jetzt habe ich die Namensvariable noch als String deklariert und die kleine Testdatei funktioniert.
Vielen Dank für die Hilfe, viele Grüße & gesund bleiben
Gert
erldigt> UForms - Idee zur Def. Variabeln
28.01.2022 10:13:34
pbaer007
Danke nochmals, Karin
"Happy Day"
Gert
Anzeige
AW: UForms - Idee zur Def. Variabeln ?
27.01.2022 17:15:25
onur
"um 20 Text-Felder mit je 3 verschiedenen ZielSpalten zu belegen" - verstehe ich richtig, dass du die selbe Userform für 3 verschiedene Datensätze (die ja identisch aufgebaut sen müssten) benutzen willst? Warum sind dann die Bläter mit den Datensätzen nicht auch gleich aufgebaut?
Ausserdem - Warum nimmst zur Neuanlage und zur Änderung der Datensätze ZWEI verschiedene UFs?
AW: UForms - Idee zur Def. Variabeln ?
27.01.2022 17:29:08
pbaer007
Hallo Onur,
Bei der Neuanlage#1 werden nur ein Teil der Datenfelder (sagen wir 1 bis 10) angezeigt.
Bei der Änderung#1 werden alle Datenfelder, die zu der Datengruppe#1 gehören, angezeigt und in den Feldern 1 bis 10 die bereits eingetragenen Informationen eingelesen.
Das Prinzip gibt es dann für eine andere Datengruppe#2. Dort werden zum Teil die gleichen Informationen erfasst, aber auch abweichende zu Gruppe#1.
Die Daten werden dann getrennt in Tabelle1 und Tabelle2 geführt.
Da ich Anfänger im UserForm-Bereich bin und ich auch meine VBA-Kenntnisse nicht als "Profi" bezeichnen möchte, mag es sicher eine technisch bessere Lösung gegeben. Aber wie gesagt Anfänger rund Laie ... da ist noch viel Platz zum Lernen.
Gert
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige