Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Liste von TextBoxen erstellen und danach durchlaufen lassen
#1
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.
Antworten Top
#2
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 
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#3
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste