Code in For - Next Schleife implementieren

Hallo Experten.

Ich habe in einer Userform 18 Textboxen (Name)= „TBN29“ - „TBN46“ mit Eingabemöglichkeit
Zusätzlich habe ich nochmals 18 Textboxen (Name)= „TBF29“ - „TBF46“ in der die Formel der jeweiligen Zellen erhalten sind.

Dieser Code benutze ich, um in jeder einzelnen Textbox (TBFxx) die die Formel enthält, die Formel aufzulösen und um danach in der jeweiligen anderen Textbox (TBNxx) , den Wert in das jeweilige Blatt und die jeweilige Zelle zu schreiben.

Kompliziert aber Ihr sieht es im Code…

Nun versuche ich verzweifelt diesen Code in eine For - Next Schleife zu implementieren, damit ich nur mit EINEM Button alle Werte einfügen kann…

Dies der Source-Code:

 Private Sub CBTB46OK\_Click()
 Dim arr, strWks As String, strRange As String
 arr = Split(Replace(TBF46, "=", ""), "!")
 strWks = Replace(arr(0), "'", "")
 strRange = arr(1)
 Sheets(strWks).Range(strRange) = TBN46.Text
 End Sub

Mit diesem Code muss ich aber bei jeder Textbox (TBNxx) einen Button haben, der mir den eingegebenen Wert in der (TBNxx) ins Richtige Blatt ans Richtige Ort schreibt…

So hab ich probieren wollen…:

Dim arr, strWks As String, strRange As String, n As Integer
 For n = 29 To 46

 arr = Split(Replace(("TBF" & n), "=", ""), "!")
 strWks = Replace(arr(0), "'", "")
 strRange = arr(1)
 Sheets(strWks).Range(strRange) = ("TBN" & n).Text

 Next n

Ich bekomme so immer einen Syntaxfehler…

Oder ist das gar nicht möglich?

Ich habe nun auch in der Userform die Tag’s beschriftet mit: „TBN29“ - „TBN46“…
Vielleicht ist es auch möglich die Textboxen mit den Tag-Namen anzusprechen? Wenn Ja, wie genau??
Ich krieg es einfacht nicht hin…

Liebe Grüsse Sascha

Hallo,

Du musst die Textboxen als Objekte ansprechen.

Ich habe mal ein Beispiel gebaut, das in drei Textboxen (Text1 bis Text3) jeweils die Nummer der Textbox schreibt.

Private Sub Command1\_Click()
 Dim i As Integer
 For i = 1 To 3
 Controls("Text" & CStr(i)).Text = CStr(i)
 Next
End Sub

OK?
Das ist in VB6 gemacht, sollte in Excel auch funktionieren.

Gruß Rainer

Hallo,

Du musst die Textboxen als Objekte ansprechen.

OK?

Hallo Rainer,

Danke für Deine Antwort…
Bin der Sache schon näher gekommen…
Ich habe Deinen Code mal so interpretiert…

Sub test()
Dim arr, strWks As String, strRange As String, i As Integer
 For i = 29 To 30

 arr = Split(Replace(Controls("TBF" & CStr(i)), "=", ""), "!")
 strWks = Replace(arr(0), "'", "")
 strRange = arr(1)
 Sheets(strWks).Range(strRange) = Controls("TBN" & CStr(i)).Text = CStr(i)

 Next i
End Sub

Das Problem ist momentan, dass es mir den Wert „FALSCH“ in die Zelle schreibt… Warum?

Das 2. Problem ist, dass die Textboxen sichtbar sein müssen. Wenn die Textbox als .Visible = False gesetzt sind, funktioniert es nicht.

Bei meinem Sheet, blende ich jeweils die Textboxen, die es nicht braucht aus, um mehr Übersicht zu haben.
Es sind aber je nach Tabellenblatt immer andere Textboxen sichtbar…
Gibt es da auch eine Lösung?

LG Sascha

Hallo Rainer,

Ich habs gefunden…
funktioniert einwandfrei.
Ich habe bei CStr(i)).Text = CStr(i), das = CStr(i) entfernt…
Klappt wunderbar.

Bleibt nur noch die Frage offen, betreffend ausgeblendeter Textboxen…
Weisst Du Rat?

Bei meinem Sheet, blende ich jeweils die Textboxen, die es
nicht braucht aus, um mehr Übersicht zu haben.
Es sind aber je nach Tabellenblatt immer andere Textboxen
sichtbar…
Gibt es da auch eine Lösung?

LG Sascha

Hi,

Bleibt nur noch die Frage offen, betreffend ausgeblendeter
Textboxen…
Weisst Du Rat?

Bei meinem Sheet, blende ich jeweils die Textboxen, die es
nicht braucht aus, um mehr Übersicht zu haben.
Es sind aber je nach Tabellenblatt immer andere Textboxen
sichtbar…
Gibt es da auch eine Lösung?

If Controls(Bezeichnung & CStr(Nummer)).Visible = True Then
 'Text eintragen
End If

Das sollte klappen.

Gruß Rainer

Hey Cool.
Funktioniert einwandfrei!!

Vielen lieben Dank Rainer. Du rettest mir den Abend

Liebe Grüsse
Sascha

Hallo,

Besser ist es wenn du eine Variable als TExtbox implementierst, dieser dann das Objekt zuweist und dann mit der Varialen arbeitest. Schaut besser aus :wink: Ürigens sichtbar kannst du Objekte auch mit HIDE machen.

MfG Alex

Hi Alex,

Besser ist es wenn du eine Variable als TExtbox
implementierst, dieser dann das Objekt zuweist und dann mit
der Varialen arbeitest. Schaut besser aus :wink: Ürigens sichtbar
kannst du Objekte auch mit HIDE machen.

ja, das weiß ich, Du hast Recht.

Ich wollte nur für diesen einfachen Fall den Code nicht unnötig verkomplizieren. So sind es drei Zeilen geworden, sonst wären es sechs gewesen.

Gruß Rainer