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

TextBox leer Code kürzen?

TextBox leer Code kürzen?
amintire
Hallo alle zusammen,
kann man folgendes auch kürzer schreiben?
TextBox31.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
TextBox9.Text = ""
TextBox10.Text = ""
TextBox11.Text = ""
TextBox12.Text = ""
TextBox13.Text = ""
TextBox14.Text = ""
TextBox15.Text = ""
TextBox16.Text = ""
TextBox17.Text = ""
TextBox18.Text = ""
TextBox19.Text = ""
TextBox20.Text = ""
TextBox21.Text = ""
TextBox22.Text = ""
TextBox23.Text = ""
TextBox24.Text = ""
TextBox25.Text = ""
TextBox26.Text = ""
TextBox27.Text = ""
TextBox28.Text = ""
TextBox29.Text = ""
TextBox30.Text = ""
Lieben Gruß Amina

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: TextBox leer Code kürzen?
22.04.2011 13:43:20
Martin
Hallo,
Mit einer Schleife sollte es gehen:
Dim i As Long
For i = 4 To 31
Me.Controls("TextBox" & i).Text = ""
Next
Gruß
Martin
AW: TextBox leer Code kürzen?
22.04.2011 13:47:06
ransi
Hallo
Wenn die TextBoxen auf einem Tabellenblatt sind dann ghets so:
Dim I As Integer
For I = 1 To 31
    Sheets("Tabelle1").OLEObjects("TextBox" & I).Object.Text = ""
Next

ransi
Anzeige
AW: TextBox leer Code kürzen?
22.04.2011 14:20:13
amintire
Hallo Martin, hallo Ransi,
also das von Martin hat gepasst, die TextFelder sind in einer UserForm.
Kann man diesen Code auch irgendwie kürzen?
Auch irgendwie mit einer Schleife ?
Das Problem hierbei ist dann auch, das der gleiche Code hergenommen wird, aber für die TextFelder 32 bis 50 oder so. aber die Cells(4 usw Cells(5 usw bleiben gleich.
If IsError(varTMP) Then .Cells(4, lngSp) = CDate(TextBox31.Text)
.Cells(5, lngSp) = TextBox4.Text
~f~ .Cells(6, lngSp) = TextBox5.Text
~f~ .Cells(7, lngSp) = TextBox6.Text
~f~ .Cells(8, lngSp) = TextBox7.Text
Genauso wie
If TextBox31.Text > "" And Not IsError(varTMP) Then
~f~ TextBox4.Text = .Cells(5, varTMP).Value
~f~ TextBox5.Text = .Cells(6, varTMP).Value
~f~ TextBox6.Text = .Cells(7, varTMP).Value
TextBox7.Text = .Cells(8, varTMP).Value
Lieben Gruß
Amina
Anzeige
baue eine Variable ein...
24.04.2011 11:07:58
Tino
Hallo,
baue in die Schleife eine Variable ein, dieser gibst Du einen Startwert (ii = 32) und
in der Schleife zählst Du diese immer um eins nach oben. (ii = ii + 1)
Gruß Tino
AW: baue eine Variable ein...
24.04.2011 12:33:41
amintire
Hallo Tino,
wie kann ich des am besten machen?
Kannst du mir da einen Anstoß geben? ;))
Lieben Gruß
Amina
mit einer separaten Sub
24.04.2011 13:46:58
Tino
Hallo,
ich würde es wahrscheinlich mit einer separaten Sub machen
an die ich die von - bis Werte übergeben kann,
diese kann man an beliebiger stelle aufrufen.
Sub Beispiel()
    Call TextBox_Leer(1, 31)
    Call TextBox_Leer(32, 50)
End Sub


Sub TextBox_Leer(intVon As Integer, intBis As Integer)
Dim i As Integer
With Sheets("Tabelle1")
    For i = intVon To intBis
        .OLEObjects("TextBox" & i).Object.Text = ""
    Next
End With
End Sub
Gruß Tino
Anzeige
AW: missverständnis
24.04.2011 14:31:57
amintire
Hallo Tino,
das mit dem "Textfelder" in einer Schleife leeren funktioniert ja.
Meinte eigentlich den anderen Code, womit die Textfelder in Zellen geschrieben werden.
cells 5 = TextBox4
cells6 = TextBox5 usw
Gruß Amina
umkehren
24.04.2011 14:43:29
Tino
Hallo,
kehren wir den Code um und bauen noch einen Zähler ein.
rngErste ist die erste Zelle.
Sub Beispiel()
    Call TextBox_Leer(Range("A1"), 1, 31)
    Call TextBox_Leer(Range("B1"), 32, 50)
End Sub


Sub TextBox_Leer(rngErste As Range, intVon As Integer, intBis As Integer)
Dim i As Integer, ii As Integer
With Sheets("Tabelle1")
    For i = intVon To intBis
       rngErste.Offset(ii, 0) = .OLEObjects("TextBox" & i).Object.Text
       ii = ii + 1
    Next
End With
End Sub
Gruß Tino
Anzeige
AW: versteh des nicht so ganz...
25.04.2011 12:03:40
amintire
Hallo Tino,
verstehe nicht so ganz wie ich das einbauen kann.
Kannst du mir anhand diesem Beispiel des erklären bzw. einmal verkürzen mit der Schleife einbauen ?
Hoffe man versteht wieso eine "Schleife" einbauen wichtig wäre, die ganzen Codes gehen fast so von CommandButton 1 - 11 ;-)
Die Schleife um die TextBox Felder zu löschen ist schon vorhanden,
aber eben eine um das ganze in die Zellen zu schreiben.
https://www.herber.de/bbs/user/74531.doc
Vielen Dank.
Gruß Amina
AW: versteh des nicht so ganz...
25.04.2011 12:39:41
Tino
Hallo,
ungetestet weil ich die Datei nicht nachbauen möchte, müsste es so gehen.
Private Sub CommandButton11_Click()
Dim varTMP As Variant, lngSp As Long
Dim iIndexTextBox As Integer, lngRow As Long
   
With Sheets(ComboBox10.Value)
     varTMP = Application.Match(CLng(CDate(TextBox295.Text)), .Rows(4), 0)
     
     If IsError(varTMP) Then
        lngSp = .Cells(4, .Columns.Count).End(xlToLeft).Column + 1 'Zeile 4 
        If lngSp = 3 And .Cells(4, 2) = "" Then lngSp = 2 'zwingend immer B4 anfangen 
     Else
        lngSp = varTMP
     End If
     
     If IsError(varTMP) Then .Cells(4, lngSp) = CDate(TextBox295.Text)
         
     iIndexTextBox = 201
     For lngRow = 5 To 98
         .Cells(lngRow, lngSp) = .OLEObjects("TextBox" & iIndexTextBox).Object.Text
         .OLEObjects("TextBox" & iIndexTextBox).Object.Text = "" 'Textbox leer 
         iIndexTextBox = iIndexTextBox + 1
     Next lngRow
End With
        
End Sub

Private Sub TextBox295_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim varTMP As Variant
Dim iIndexTextBox As Integer, lngRow As Long
  
With Sheets(ComboBox10.Value)
    If TextBox295.Text > "" Then _
    varTMP = Application.Match(CLng(CDate(TextBox295.Text)), .Rows(4), 0) 'Zeile4 
    iIndexTextBox = 201
    If TextBox295.Text > "" And Not IsError(varTMP) Then
        For lngRow = 5 To 98
            .OLEObjects("TextBox" & iIndexTextBox).Object.Text = .Cells(lngRow, varTMP).Value
            iIndexTextBox = iIndexTextBox + 1
        Next lngRow
    Else
        For lngRow = 5 To 98
            .OLEObjects("TextBox" & iIndexTextBox).Object.Text = ""
            iIndexTextBox = iIndexTextBox + 1
        Next lngRow
    End If
End With

End Sub
Gruß Tino
Anzeige
AW: Fehler...
25.04.2011 13:00:17
amintire
Hallo Tino,
danke für deine schnelle Antwort und Hilfe.
Bei mir kommt folgender Laufzeitfehler '1004':
Die OLEObjects-Eigenschaft des Worksheet-Objektes kann nicht zugeordnet werden.
Lieben Gruß
Amina
AW: Beispielmappe
25.04.2011 13:46:46
Tino
Hallo,
ich dachte die Textboxen befinden sich auf einer Tabelle und nicht auf einer Userform.
Sorry habe nicht alle Beiträge gelesen.
Hier die angepasste Datei.
https://www.herber.de/bbs/user/74534.xls
Gruß Tino
Anzeige
AW: Beispielmappe
25.04.2011 14:05:51
amintire
Vielen Dank für deine Hilfe Tino.
Jetzt funktioniert es. Danke.
Außer das die letzte TextBox nicht leer wird, aber kann man dann auch manuell machen.
Lieben Gruß
Amina

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige