Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ändern von Eigenschaften einer TextBox in einer la

Ändern von Eigenschaften einer TextBox in einer la
27.01.2008 15:15:34
Eigenschaften
Hallo,
kann ich während einer laufenden Userform die Eigenschaften einer TextBox ändern?
Der VBA-Code
...
txt_verzeichnis.Text = str_verzeichnis (die Variable "str_Verzeichnis" beinhaltet einen Datenpfad)
...
funktioniert nicht.
Beim Neustart der Userform oder der Anwendung ist die Eigenschaft nicht geändert!
Wenn ich dagegen eine Textbox direkt auf ein Tabellenblatt einbette, dann kann ich deren Eigenschaften ändern!
Ich hatte mal gelesen, dass die Eigenschaften von Steuerelementen in einer laufenden UserForm nicht geändern werden können.
Bleibt da tatsächlich nur noch die wenig elegante "Range-Lösung" (Werte in eine Zelle schreiben und beim Neustart wieder auslesen)?
Gruß Roland

Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ändern von Eigenschaften einer TextBox in einer la
27.01.2008 15:20:40
Eigenschaften
Hi,
klar geht das, poste mal den gesamten relevanten Code.
mfg Horst

AW: Ändern von Eigenschaften einer TextBox in einer la
27.01.2008 16:34:11
Eigenschaften
Hallo Horst,
anbei der relevante Code (die Variablen sind global deklariert!):
......
'Textbox "Verzeichnis"

Private Sub txt_verz01_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Inhalt der Textbox in Variable sichern
str_verz01 = txt_verz01
'Kombinationsfeld löschen
cbo_datei01.Clear
cbo_datei01.Text = ""
cbo_datei01.Value = ""
'System-Fehlerbearbeitung unterdrücken
On Error GoTo fehler
'Dateien im Arbeitsverzeichnis auslesen und in Kombinationsfeld eintragen
ChDir txt_verz01
With Application.FileSearch
.NewSearch
.LookIn = txt_verz01
.SearchSubFolders = False
.FileType = msoFileTypeExcelWorkbooks
.Execute (msoSortByFileName)
For i = 1 To .FoundFiles.Count
cbo_datei01.AddItem .FoundFiles(i)
If i = 1 Then
cbo_datei01 = .FoundFiles(1)
str_datei01 = cbo_datei01
End If
Next i
End With
'System-Fehlerbearbeitung wieder zulassen
On Error GoTo 0
      'TextBox-Eintrag als Text-Eigenschaft sichern
txt_verz01.Text = str_verz01Exit Sub
'Fehlermeldung
fehler:
MsgBox "Verzeichnis konnte nicht gefunden werden!"
'System-Fehlerbearbeitung wieder zulassen
On Error GoTo 0
'Fokus zurück an Textfeld geben
txt_verz01.SetFocus
End Sub


.....
Sinn ist:
In eine TextBox wird ein Datenpfad eingegeben, der wie eine Default-Einstellung bis zur nächsten Änderung gelten soll.
Mit diesem Pfad werden dann die Dateien aus dem Verzeichnis als Items in eine ComboBox eingetragen und angezeigt.
Hier kann dann eine Excel-Arbeitsmappe ausgewählt werden. Daraus werden dann Inhalte von Zellen in die aktuelle Arbeitsmappe eingelesen.
Das funktioniert auch prima, wenn ich die Steuerelemente direkt auf dem Tabellenblatt einbette. Aber nicht innerhalb einer laufenden UserForm!!
Gruß Roland

Anzeige
AW: Ändern von Eigenschaften einer TextBox in einer la
27.01.2008 15:24:25
Eigenschaften
Hallo Roland,
mir scheint, du verwechselst etwas - oder ich verstehe deinen Code falsch.
Du änderst doch mit txt_verzeichnis.Text = str_verzeichnis nicht die Eigenschaft der TextBox, sondern ihren Inhalt.
Den Inhalt einer TextBox kannst du aber nicht speicher, sondern musst ihn immer erneut eintragen, sei es im UserForm_Initialize oder einem andern Click-Ereignis.
Gruß Peter

Anzeige
AW: Ändern von Eigenschaften einer TextBox in einer la
27.01.2008 16:21:00
Eigenschaften
Hallo Peter,
Sinn meiner Aktion ist folgender:
Ich will den in eine Textbox eingegebenen Verzeichnispfad für den nächsten Start der Anwendung retten.
Dazu trage ich den Inhalt einer TextBox mit dem VBA-Code "Textbox.Text = TextBox oder auch Variable(!) als Wert in die Text-Eigenschaft der TextBox ein. Beim nächsten Start der Anwendung ist die TextBox dann vorbelegt wie bei einer Default-Einstellung. Wird dieser Eintrag verändert, erfolgt ein neuer Eintrag in die Text-Eigenschaft der TextBox.
Das funktioniert auch prima, solange ich das bei TextBoxen anwende, die ich direkt auf das Tabellenblatt eingebettet habe. Die Text-Eigenschaft wird befüllt und bleibt erhalten.
Wende ich dieses Verfahren jedoch auf TextBoxen an, die ich in eine UserForm eingebettet habe. ist deren Text-Eigenschaft nicht veränderbar; wie auch alle anderen Eigenschaften.
Ich kann die Eigenschaften nur direkt ändern. Aber das bringt in diesem Fall nichts.
Gruß Roland

Anzeige
AW: Ändern von Eigenschaften einer TextBox in einer la
27.01.2008 16:25:49
Eigenschaften
Hi.
"...Wende ich dieses Verfahren jedoch auf TextBoxen an, die ich in eine UserForm eingebettet habe. ist deren Text-Eigenschaft nicht veränderbar; wie auch alle anderen Eigenschaften.
Ich kann die Eigenschaften nur direkt ändern..."
Das kann nicht sein, lad mal ein Beispiel hoch, wo dieses Verhalten auftreten soll.
mfg Horst

Anzeige
AW: Ändern von Eigenschaften einer TextBox in einer la
27.01.2008 16:37:00
Eigenschaften
Hallo Horst,
habe eben auf Deine Antwort geantwortet, s.o.!
Gruß Roland

AW: Ändern von Eigenschaften einer TextBox in einer la
27.01.2008 16:45:28
Eigenschaften
Hallo Roland,
natürlich sind die Eigenschaften veränderbar:
TextBox1.Text="Text"
und lesbar (hier in Variable Text)
Text=TextBox1.Text.
Nur ist die Datenhaltung im Gegensatz zur Arbeitmappe flüchtig. Willst du die Variable dir nur _ solange merken, solange der Code ausgeführt wird, reicht eine Deklaration mit "Static Text" aus. Schließt du dagen die Anwendung oder schaltest den PC ab, musst du die Daten in eine Datei schreiben, z.B. in der

Sub für den Abbrechen-Button oder/und in der 

Sub Userform_Terminate:
Open "Deine Datei" for Output as #1
write #1,Text
Close #1
Das Wiedereinlesen machst du z.B. in der


Sub UserForm_Initialize()
Open "Deine Datei" for Input as #1
input #1,Text
Close #1
textBox1.text=Text
End Sub


~f~
Ich hoffe, dir geholfen zu haben
Holger

Anzeige
AW: Ändern von Eigenschaften einer TextBox in einer la
27.01.2008 16:51:42
Eigenschaften
Hallo Holger,
das ist doch ähnlich wie die das Ablegen des Inhaltes der Textbox mittels Range in irgendeine Zelle einer Tabelle, die ich nach dem Neustart wieder auslese. Sehe ich das richtig?
Komisch ist nur, das das mit Steuerelementen, die direkt auf dem Tabellenblatt eingebettet sind funktioniert!!
Gruß Roland

Anzeige
AW: Ändern von Eigenschaften einer TextBox in einer la
27.01.2008 16:57:00
Eigenschaften
Hi,
in einer Tabelle sind die Controls eingebettete OLE-Objekte, die werden mit allen
Eigenschaften und Werten zusammen mit der Mappe gespeichert.
mfg Horst

AW: Ändern von Eigenschaften einer TextBox in einer la
27.01.2008 17:10:00
Eigenschaften
Hallo Horst,
ich muss nochmal... es will mir noch nicht ins Großhirn.
Wenn ich den Wert eines Controls (in einer UserForm) über das Eigenschaftsfester direkt eintrage, bleibt er erhalten und wird nach einem Neustart der Anwendung wieder angezeigt.
Er ist aber nicht mittels VBA-Code veränderbar. Warum ?
Gruß Roland

Anzeige
AW: Ändern von Eigenschaften einer TextBox in einer la
27.01.2008 19:10:00
Eigenschaften
Hi,
"...Er ist aber nicht mittels VBA-Code veränderbar. Warum ?..."
Wer sagt das denn, ist natürlich änderbar!
mfg Horst

AW: Ändern von Eigenschaften einer TextBox in einer la
27.01.2008 23:43:54
Eigenschaften
Hallo Horst,
probiers mal aus:
1. TextBox direkt auf dem Tabellenblatt:
Text-Eigenschaft per VBA veränderbar (TextBox.Text = "irgendeinText" oder TextBox.Value = "irgendeinText")!
Wenn Du die Anwendung schließt und wieder öffnest wird der Text automatisch wie eine Default-Einstellung aus der Text-Eigenschaft in der TextBox übernommen und angezeigt.
2. Textbox auf der UserForm:
Text-Eigenschaft per VBA nicht änderbar!
Du kannst der TextBox zwar einen Text übergeben (TextBox = "irgendeinText") aber nicht in die Text-Eigenschaft schreiben (TextBox.Text = "irgendeinText" oder TextBox.Value = "irgendeinText").
Wenn Du die Anwendung schließt und wieder öffnest ist der Text verloren und die TextBox leer.
Das liegt evtl. an der UserForm, da werden die Steuerelemente anders verwaltet.
Wenn Du eine Lösung parat hast, dann her damit ;-))
Gruß Roland

Anzeige
AW: Ändern von Eigenschaften einer TextBox in einer la
27.01.2008 16:46:24
Eigenschaften
nochmal..
das "Exit Sub" gehört natürlich in eine neue Zeile; ist beim Aufbereiten verrutscht.
Gruß Roland

AW: Ändern von Eigenschaften einer TextBox in einer la
28.01.2008 10:16:55
Eigenschaften
Hallo,
der Unterschied zwischen Tabelle und UserForm ist, dass bei einer Tabelle Excel die Speicherung der momentanen Werte übernimmt, wenn du die tabelle speicherst. Horst hatte versucht, dir das zu erklären:
"in einer Tabelle sind die Controls eingebettete OLE-Objekte, die werden mit allen
Eigenschaften und Werten zusammen mit der Mappe gespeichert."
Bei einem Makro ist das anders. Hier musst du selbst für die Speicherung sorgen. Wie das geht, habe ich dir als Beispiel in meinem Beitrag vom 27.01., 16:45 gezeigt.
Gruß
Holger

Anzeige
AW: Ändern von Eigenschaften einer TextBox in einer la
28.01.2008 20:10:00
Eigenschaften
Hallo Holger und Horst,
ist mir jetzt klar!! Vielen Dank! Irgendwie wollte mir das nicht in den Kopf.
Also werde ich mich für die Range-Variante entscheiden müssen. Ist zwar nicht so elegant, aber erfüllt seinen Zweck.
Gruß Roland
;
Anzeige
Anzeige

Infobox / Tutorial

Eigenschaften einer TextBox in einer UserForm ändern


Schritt-für-Schritt-Anleitung

Um die Eigenschaften einer TextBox in einer UserForm während der Laufzeit zu ändern, kannst du den folgenden VBA-Code verwenden. Dieser Code zeigt, wie du eine TextBox mit einem Default-Wert befüllen und diesen Wert speichern kannst.

  1. Erstelle eine UserForm und füge eine TextBox (txt_verz01) und eine ComboBox (cbo_datei01) hinzu.
  2. Deklariere die notwendigen Variablen global:
    Dim str_verz01 As String
    Dim str_datei01 As String
  3. Füge den folgenden Code in das UserForm-Modul ein:

    Private Sub txt_verz01_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       ' Inhalt der TextBox in Variable sichern
       str_verz01 = txt_verz01.Text
    
       ' Kombinationsfeld löschen
       cbo_datei01.Clear
       cbo_datei01.Text = ""
    
       ' Dateisuchen und in ComboBox eintragen
       ChDir str_verz01
       With Application.FileSearch
           .NewSearch
           .LookIn = str_verz01
           .SearchSubFolders = False
           .FileType = msoFileTypeExcelWorkbooks
           .Execute
           For i = 1 To .FoundFiles.Count
               cbo_datei01.AddItem .FoundFiles(i)
           Next i
       End With
    
       ' TextBox-Eintrag als Text-Eigenschaft sichern
       txt_verz01.Text = str_verz01
    End Sub

Häufige Fehler und Lösungen

  1. Fehler: TextBox-Eigenschaft wird nicht gespeichert.

    • Lösung: Stelle sicher, dass du die TextBox mit txt_verz01.Text = str_verz01 befüllst, bevor die UserForm geschlossen wird. Die Text-Eigenschaft wird nicht automatisch gespeichert.
  2. Fehler: Kombinationsfeld bleibt leer.

    • Lösung: Überprüfe den Pfad, den du in die TextBox eingibst. Stelle sicher, dass der Pfad gültig ist und Excel die Dateien finden kann.

Alternative Methoden

Falls du die TextBox-Eigenschaften nicht direkt in der UserForm speichern kannst, gibt es Alternativen:

  • Speichern in einer Zelle: Du kannst den Inhalt der TextBox in eine Zelle schreiben und beim nächsten Start der UserForm wieder auslesen.

    ' Speichern in einer Zelle
    Sheets("DeinBlatt").Range("A1").Value = txt_verz01.Text
    
    ' Laden beim Initialisieren der UserForm
    txt_verz01.Text = Sheets("DeinBlatt").Range("A1").Value
  • Verwendung von Dateien: Du kannst die Werte in einer Textdatei speichern und beim Start der UserForm wieder laden.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die TextBox-Eigenschaften in einer UserForm verwalten kannst:

  1. Default-Wert setzen:

    Private Sub UserForm_Initialize()
       txt_verz01.Text = "C:\MeinStandardverzeichnis"
    End Sub
  2. TextBox-Inhalt beim Schließen der UserForm speichern:

    Private Sub UserForm_QueryClose(Cancel As Integer)
       ' Inhalte in eine Zelle speichern
       Sheets("DeinBlatt").Range("A1").Value = txt_verz01.Text
    End Sub

Tipps für Profis

  • Nutze die Static-Variablen, wenn du Werte innerhalb des Codes speichern möchtest, ohne sie in einer Zelle oder Datei abzulegen.
  • Experimentiere mit verschiedenen Steuerelementen in der UserForm, um die bestmögliche Benutzererfahrung zu erzielen.
  • Dokumentiere deinen Code gut, um die Wartung und zukünftige Anpassungen zu erleichtern.

FAQ: Häufige Fragen

1. Können TextBox-Eigenschaften in einer UserForm gespeichert werden?
Ja, jedoch nicht automatisch. Du musst den Inhalt manuell in eine Zelle oder Datei speichern.

2. Was ist der Unterschied zwischen einer TextBox auf einem Tabellenblatt und einer in einer UserForm?
Die TextBox auf einem Tabellenblatt speichert ihre Inhalte automatisch, während du in einer UserForm selbst für das Speichern sorgen musst.

3. Wie kann ich einen Default-Wert in einer TextBox setzen?
Du kannst den Default-Wert im UserForm_Initialize-Ereignis festlegen, indem du den gewünschten Wert direkt zuweist, z.B. txt_verz01.Text = "DeinWert".

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige