Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
296to300
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
296to300
296to300
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

TextBox-Eigenschaften en Block ändern

TextBox-Eigenschaften en Block ändern
19.08.2003 18:09:41
ralf
hallo!
folgendes Problem:in einer UF habe ich etliche TB, die in Abhängigkeit ihrer Value Eigenschaft Darstellungseigenschaften ändern. Nun möchte ich die Änderungen der Darstellungseigenschaften in einer Schleife abarbeiten(um Schreibaufwand zu sparen). Wie kann ich die TextBoxen indizieren und, um die Schleife abzuarbeiten, auf die indizierten TB zugreifen?
mit bestem Dank an alle die Ideen dazu haben

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TextBox-Eigenschaften en Block ändern
19.08.2003 21:36:18
Klaus Schubert
Hmmm... nicht ganz einfach zu verstehen, was du meinst, aber vielleicht hilft dir dieser Code ein wenig weiter (in deine UF kopieren):

Function tbValueAuswerten(tbWert As String)
Select Case tbWert
Case "rot"
tbWertAuswerten = 3 'Interior.ColorIndex - Wert für rot
Case "grün"
tbWertAuswerten = 10 'Interior.ColorIndex - Wert für grün
Case "blau"
tbWertAuswerten = 5 'Interior.ColorIndex - Wert für blau
Case "gelb"
tbWertAuswerten = 6 'Interior.ColorIndex - Wert für gelb
Case "grau"
tbWertAuswerten = 15 'Interior.ColorIndex - Wert für grau
End Select
End Function
Private Sub CommandButton1_Click()
Dim intCounter As Integer, tbWert As String
For intCounter = 1 To 5
tbWert = Controls("TextBox" & intCounter).Value
Select Case intCounter
Case 1 'TextBox1 ändert Zelle A1
Range("a1").Interior.ColorIndex = tbValueAuswerten(tbWert)
Case 2 'TextBox2 ändert Zelle A2
Range("a2").Interior.ColorIndex = tbValueAuswerten(tbWert)
Case 3 'Textbox3 ändert Zelle A3
Range("a3").Interior.ColorIndex = tbValueAuswerten(tbWert)
Case 4 'Textbox4 ändert Zelle A4
Range("a4").Interior.ColorIndex = tbValueAuswerten(tbWert)
Case 5 'Textbox5 ändert Zelle A5
Range("a5").Interior.ColorIndex = tbValueAuswerten(tbWert)
End Select
Next intCounter
End Sub

Zur Erklärung: Mit Controls("TextBox" & intCounter).Value kannst du TextBoxen in einer Schleife abarbeiten, allerdings müssen die TextBoxen entsprechend durchnummeriert sein, in diesem Beispiel TextBox1, TextBox2 , ... TextBox5 (deswegen die For ... next Schleife von 1 bis 5 , bitte anpassen!).
Über Case kannst du jetzt jeder TextBox ein Ereignis zuordnen, in diesem Beispiel wird bei jeder TextBox eine andere Zelle eingefärbt (TextBox1 ändert Zelle A1 , Textbox2 ändert Zelle A2 usw.).
Die Reaktion auf die Value-Eigenschaft jeder Textbox erfolgt in der Funktion, in diesem Beispiel wird der Function z.B. der Interior.ColorIndex - Wert 3 für rot zugeordnet, wenn in der entsprechenden Textbox der wert "rot" geschrieben steht.Entsprechend ändert sich die Zellfarbe in rot, abhängig davon, in welcher TextBox der Wert gestanden hat.
Dafür,dass ich nicht genau weiß, wie du deinen Code geschrieben hast oder was du genau bezwecken willst hoffe ich, dass es einigermaßen verständlich war.
Gruß Klaus

Anzeige
AW: TextBox-Eigenschaften en Block ändern
20.08.2003 11:23:18
Ralf
Hallo Klaus,
vielen Dank für die schnelle Antwort und die Anregungen, leider trifft es mein Problem nicht ganz, ich versuche es noch einmal exakt zu beschreiben.
Meine Textboxen (von 1 bis 10) in der Userform erhalten ihre Werte aus einem Excel-Datensatz(Struktur: daten.daten_k(i);mit k = 1 bis 10 und i =1 bis ...).
In der UF kann ich die Datensätze mit der Scrollbar durchblättern, wobei in den Textboxen die Werte für daten_k angezeigt werden,
und z.B.gilt dabei
TextBox(k).Locked = True
TextBox(k).Caption = daten.daten_k (ScrollBar1.Value)
TextBox(k).BackColor = &H8000000C&
Für das Erstellen eines neuen Datensatzes soll für die Textboxen z.B.folgendes gelten:
TextBox(k).Caption = ""
TextBox(k).Locked = False
TextBox(k).BackColor = &H80000005&
Wenn ich für jede Textbox die Eigenschaften einzeln aufschreibe (30 mal!) funktioniert alles prima, es ist nur ein großer Schreibaufwand und ich möchte mir das gern ersparen, zumal ich noch ähnliche Prozeduren schreiben muß.
Daher meine Vorstellung diese Aufgabe einer Schleife zu übergeben.
etwa so:
For k = 1 To 10
TextBox(k).Caption = ""
TextBox(k).Locked = False
TextBox(k).BackColor = &H80000005&
Next
Mir ist es bisher allerdings nicht gelungen dafür einen korrekten Code zu schreiben
immer noch mit bestem Dank für alle Ideen
Ralf

Anzeige
AW: TextBox-Eigenschaften en Block ändern
20.08.2003 13:27:17
Klaus Schubert
Hallo Ralf,
folgenden Code in deine Prozedur einbauen:

Dim k As Integer
For k = 1 To 10
With Controls("TextBox" & k)
.Value = ""
.Locked = False
.BackColor = &H80000005
End With
Next k

Damit es funktioniert, müssen deine Textboxen, wie bereits erwähnt, vom Namen her durchnummeriert sein, also "TextBox1", "TextBox2" ... "TextBox10" (genaue Schreibweise beachten !).
In deinem Beispiel hast du übrigens TextBox(k).Caption verwendet, kann aber nicht funktionieren, da es Caption für eine TextBox nicht gibt !!!(nur Value oder Text).
Gruß Klaus

Anzeige
AW: TextBox-Eigenschaften en Block ändern
20.08.2003 13:45:24
Ralf
Hallo Klaus
mit vielen Dank für die Hilfe, in einem ersten Test klappt es wunderbar!!!
Gruß Ralf

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige