Registriert seit: 11.04.2023
	
Version(en): Ms 2021
	
 
	
	
		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.
	
 
 
	
	
	
		
	Registriert seit: 25.11.2021
	
Version(en): 2019, 365
	
 
	
		
		
		11.04.2023, 20:01 
(Dieser Beitrag wurde zuletzt bearbeitet: 11.04.2023, 20:56 von Ralf A.)
		
	 
	
		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 Shape, tb2 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:=False, Left:=100, Top:=40, Width:=50, Height:=30.5).Name = "ErsteTextBox"
        
Set tb1 = Shapes("ErsteTextBox") 'Textbox 1 setten
'Textbox2 erstellen
ActiveSheet.OLEObjects.Add(ClassType:="Forms.TextBox.1", Link:=False, _
        DisplayAsIcon:=False, Left:=200, Top:=40, Width:=50, Height:=30.5).Name = "ZweiteTextBox"
'Array befüllen
Textboxen = Array(tb1, Shapes("ZweiteTextBox")) 'Beachten: 2. Box wurde nicht gesettet, wird 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
	
	
 
 
	
	
	
		
	Registriert seit: 09.09.2022
	
Version(en): 2016
	
 
	
	
		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