Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
944to948
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
944to948
944to948
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Ä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

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

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

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

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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige