Clever-Excel-Forum

Normale Version: Liste von TextBoxen erstellen und danach durchlaufen lassen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Mein Code:
Code:
Dim Textfelder() As MSForms.TextBox
Textfelder = Array(TextBox1, TextBox2)

Dim tb As MSForms.TextBox
For Each tb In TextBoxList
Ich möchte eine Liste an TextBoxen erstellen. Soweit bin ich jetzt mal aber ich bekomme leider immer wieder einen Typen unverträglichkeits Fehler.

"Laufzeitfehler: 13"
Typen unverträglich

Danke für die Hilfe.
Hi,

Dein Array heißt ja auch nicht  Textboxlist sondern Textfelder...

Bsp.:

PHP-Code:
Private Sub UserForm_Click() 'in einer Userform
Dim Textfelder(), tb

Textfelder = Array(Me.TextBox1, Me.TextBox2)

For Each tb In Textfelder
  Debug.Print tb.Name
Next
End Sub 

Wenn Du aber Boxen in einem Tabellenblatt bearbeiten willst, musst Du anders vorgehen:
PHP-Code:
Option Explicit

Private Sub Test()
Dim Textboxen(), tb
Dim tb1 
As Shapetb2 As Shape
Dim ct 
As OLEObject

For Each tb In ActiveSheet.Shapes
    tb
.Delete 'Achtung: Alle Shapes werden gelöscht, nicht nur Textboxen...
Next

'
Textbox1 erstellen
ActiveSheet
.OLEObjects.Add(ClassType:="Forms.TextBox.1"Link:=False_
        DisplayAsIcon
:=FalseLeft:=100Top:=40Width:=50Height:=30.5).Name "ErsteTextBox"
        
Set tb1 
Shapes("ErsteTextBox"'Textbox 1 setten

'
Textbox2 erstellen
ActiveSheet
.OLEObjects.Add(ClassType:="Forms.TextBox.1"Link:=False_
        DisplayAsIcon
:=FalseLeft:=200Top:=40Width:=50Height:=30.5).Name "ZweiteTextBox"

'Array befüllen
Textboxen = Array(tb1, Shapes("ZweiteTextBox")) '
Beachten2. Box wurde nicht gesettetwird also über den Namen angesprochen!

For 
Each tb In Textboxen 'Alle im Array gespeicherten Objekte durchlaufen
    Debug.Print tb.Name
Next

Debug.Print tb1.Name, Textboxen(0).Name,

'
Werte zuweisen
Set ct 
OLEObjects(tb1.Name'das OleObjekt setten mit tb1
ct.Object.Value = "Hallo"

Set ct = OLEObjects(Textboxen(1).Name) '
das OleObjekt setten mit dem Arrayobjekt
ct
.Object.Value Application.UserName
End Sub 
Hi,

der Fehler "Typen unverträglich" kommt, weil die Inhalte der Textboxen in das Array geschrieben werden sollen.

Versuch es mal auf einem anderen Weg:

Code:
Controls("Textbox" & x)

Mit einer ForNext-Schleife.

Außerdem würde ich empfehlen Option explicit zu verwenden. Dann wäre bei "Textboxlist" gemeckert worden.

CU
Oberon