Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1548to1552
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

Zuweisung von Objekteigenschaften?

Zuweisung von Objekteigenschaften?
06.04.2017 16:26:17
Objekteigenschaften?
Ein fröhliches Hallo in die Forumsrunde,
ich habe da mal wieder ein Problem und kann es mit meinen bescheidenen Mitteln nicht lösen :-(
Was will ich machen?:
Ich habe eine UserForm mit 12 Textboxen, die in Abhängigkeit von der Eingabe gefüllt werden.
Bsp.:
Wird in der ersten Textbox eine 4 eingetragen, so sollen in allen nachfolgenden Textboxen ebenfalls eine 4 eingetragen werden. Wird dagegen die 5. Textbox geändert (z. B. Eingabe "15"), so sollen die Werte nur in den nachfolgenden (also NICHT in den ersten 4) ebenfalls angepasst - also den Wert "15" erhalten.
Mein Lösungsansatz:
Ich hatte hierfür folgenden Lösungsansatz vorgesehen. Die Textboxen habe ich im Namen durchnummeriert (00 bis 12), um sie später identifizieren bzw. ansprechen zu können. Grundsätzlich ist der Trigger für eine Änderung das "AfterUpdate" Event. Anschließend wird der Name der Textbox in 2 Teile zerlegt - den Textanteil und den numerischen Anteil.
Aktuell habe ich den Code noch (zum Testen) der ersten Textbox zugeordnet. Grundsätzlich soll er aber in eine Funktion bzw. Prozedur ausgelagert werden, um ihn dann dynamisch (auch UserForm übergreifend) nutzen zu können. UF übergreifend, da auf anderen UF eine ähnliche Problematik besteht. Hier der Code:
Private Sub txt_bsp_00_AfterUpdate()
Dim var_string As String
Dim var_Teilstring_1 As String
Dim var_Teilstring_2 As Integer
Dim var_string_length As Integer
Dim i As Integer
Dim var_Zelleninhalt As Integer
Dim i_str As String
var_Zelleninhalt = UF_settings.txt_bsp_00.Value
var_string_length = Len(UF_settings.txt_bsp_00.Name)
var_Teilstring_1 = Left(UF_settings.txt_bsp_00.Name, (var_string_length - 2))
var_Teilstring_2 = CInt(Right(UF_settings.txt_bsp_00.Name, 2))
For i = var_Teilstring_2 To 12 Step 1
'        Abfangen, wenn i 
Function func_update_textbox ()
Frage:
Ich vermute stark, dass das mit der Umbenennung, Verkettung und Zuweisung in die Variable "var_string" nicht geht, da "var_string" keine Objekteigenschaft ist und ich ihm somit auch keinen Wert zuweisen kann. Richtig?
Hat jemand eine Idee, wie ich das Problem lösen kann? Mit Objektprogrammierung o. ä. kenne ich mich absolut nicht aus.
VG und besten Dank schon mal vorab für eure Beiträge
Ingo

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zuweisung von Objekteigenschaften?
06.04.2017 18:45:39
Objekteigenschaften?
Hallo,
kannst mal so versuchen.
Wenn deine TextBoxen sauber in Reihenfolge benannt sind, könnte es so gehen.
Dialog UserForm1
Option Explicit 

Dim clsTextBox() As New Klasse1

Private Sub UserForm_Initialize()
Dim i%
Redim clsTextBox(1 To 12)
For i = 1 To 12
Set clsTextBox(i).txtBox = Me("TextBox" & i)
Next i
End Sub
Klassenmodul Klasse1
Option Explicit 

Public WithEvents txtBox As MSForms.TextBox

Private Sub txtBox_Change()
Dim nIndex, strText$

If UserForm1.Tag = "1" Then Exit Sub

nIndex = Replace(txtBox.Name, "TextBox", "") * 1
strText = txtBox.Text

UserForm1.Tag = "1"
For nIndex = nIndex + 1 To 12
UserForm1("TextBox" & nIndex).Text = strText
Next
UserForm1.Tag = ""

End Sub
Gruß Tino
Anzeige
AW: Zuweisung von Objekteigenschaften?
07.04.2017 08:24:47
Objekteigenschaften?
Hallo Tino,
zuerst einmal vielen Dank für Deine Antwort. Ich habe mit Klassenprogrammierung noch keine Erfahrung. Könntest Du mir daher bitte noch ein paar Erläuterungen zu Deinem Skript geben? Was ich meine zu verstehen ist folgendes:
Zunächst wird eine neue Klasse mit "clsTextBox() As New Klasse1" definiert.
Unter "UserForm_Initialize()" wird dann über den Zähler der eigentliche Textboxname gebildet. In meinem Bsp. müsste "TextBox" dann "var_Teilstring_1 = txt_bsp_" entsprechen. Richtig?
Als Ergebnis dieses Skriptes habe ich für alle 12 TextBoxen eine neue Klasse definiert. Richtig?
Bei dem Klassenmodul "Klasse1" werden meinem Verständnis nach die Eigenschaften von "MSForms.TextBox" vererbt.
Das, was dann in der eigentlichen Sub folgt, kann ich nicht mehr nachvollziehen. Kannst Du mir da bitte ein wenig "Nachhilfe" geben :-)
Auch hat sich mir noch nicht erschlossen, wie Du die Aufteilung des ursprünglichen Textbox-Namens (Bsp.: txt_bsp_00 in txt_bsp_ und 00) vornimmst. Aber ich vermute stark, dass ich das noch mit meinem Skript (var_Teilstring_1 und _2) kombinieren muss. Das wäre dann aber das geringere Problem ...
VG und nochmals besten Dank!
Ingo
Anzeige
hier eine datei als Beispiel
07.04.2017 12:23:30
Tino
Hallo,
habe dir ein Beispiel aufgebaut mit den TextBoxen txt_bsp_0 bis txt_bsp_11.
Kommentare stehen im Code!
Vielleicht ist es so verständlicher.
https://www.herber.de/bbs/user/112722.xls
Gruß Tino
AW: hier eine datei als Beispiel
07.04.2017 14:45:15
Ingo
Hi Tino,
aahhh OK, das ist etwas anders, als das was ich vor hatte. Du referenzierst auf den TabIndex. Ich hatte mich auf den Namen der TextBox bezogen. Deins ist ein etwas anderer Ansatz, aber vielleicht auch der sauberere.
Das reicht mir erst einmal aus. Ich bau das bei mir mal um und wenn ich noch Fragen habe, komme ich noch einmal auf Dich zu.
Vielen, vielen Dank! Das war eine große Hilfe!
Vielleicht noch eine doofe Frage etwas abseits meines Themas. Du verwendest einen Button "Start Beispiel". Ich habe im Code vergeblich die Ereignisroutine dazu gesucht. Ich bin bislang davon ausgegangen das ich eine Ereignissteuerung "cmdButton_Click" (o. s. ä.) benötige. Wie hast Du den Aufruf realisiert?
VG und ein schönes WE
Ingo
Anzeige
nix TabIndex
07.04.2017 14:48:36
Tino
Hallo,
Nein nix TabIndex.
Im Code erstelle ich den Index aus dem Namen!
Gruß Tino
Vielen Dank!
07.04.2017 15:04:58
Ingo
Danke Tino,
wer lesen kann ist klar im Vorteil. Du hast es ja auch gut beschrieben :-( und manchmal dauert es halt bis oben etwas ankommt :-) Das ist dann genau das was ich benötige.
Hast Du noch einen Tipp bezüglich der Ereignissteuerung mittels cmdButton_Click (siehe meine letzte Frage eben). Das interessiert mich schon sehr, da ich das im Forum schon wiederholt gesehen habe.
VG und nochmals besten Dank!
Ingo
AW: Vielen Dank!
07.04.2017 17:56:46
Tino
Hallo,
Schau mal im VBA, dort ist ein normales Modul.
Da drin ist ein Makro, Dieses habe ich dem Button zugewiesen.
Rechte Maustaste Makro zuweisen.
Gruß Tino
Anzeige
AW: Vielen Dank!
10.04.2017 07:36:52
Ingo
Guten Morgen Tino,
nochmals vielen lieben Dank für Deine Unterstützung. Ist alles soweit OK :-)
Auch der Makroaufruf ist nun klar.
VG und eine schöne Woche
Ingo

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige