es ist wohl heute schon mein erster Veggie-Tag im Jahr 2025: zwei ganz dicke Tomaten auf den Augen und ein Blumenkohl als Hirn ...
Sorry, ich finde ums Mäusemelken keine Lösung für mein Thema. Okay - wo geht's los? In einer manuell erstellten USF habe ich zwei CommandButtons (cdmOkay, cmdChange). Der USF füge ich im USF_Activate je nach einem Public definiertem String sCase mehr oder weniger viele Textboxen hinzu, für die neben ihrer Position, verschiedenen Formaten jeweils ein Text definiert werden. Andere TBX gibt es nicht.
Das klappt soweit wunderbar. Je nach sCase erhalte ich die ein oder andere perfekte USF.
Dann passieren in den Textboxen Änderungen, die ich zurück an den Ursprung ihrer Vorgänger ( die .TextFrame.Characters.Text-Eigenschaft verschiedener Shapes) schreiben möchte. Das Adressieren der Shapes funktioniert problemlos, das Schreiben von freiem Text auch.
Nur nicht mit dem Text aus den TBX

Hier der kommentierte Code (in der USF), der bereits die Existenz und Adressierbarkeit der TBX prüft. Die beiden >>>>Fehlerzeilen<<<< sind auskommentiert und markiert.
Code: Alles auswählen
Private Sub cmdOkay_Click() 'dieser Button ist in den Eigenschaften der USF definiert
Dim i As Integer, c As Integer
Dim ctr As Control
'die TBX werden im USF_Activate dynamisch generiert, positioniert und mit Text gefüllt
For Each ctr In Me.Controls 'dieser kleine Test schreibt erfolgreich alle TBX mit korrektem Namen und Text
If TypeName(ctr) = "TextBox" Then
Debug.Print ctr.Name & " - " & ctr.Text
End If 'VBA kann also darauf zugreifen
Next
If sCase = "row" Then 'hier haben die Shapes die gleiche Kennziffer wie die tbx
For i = 1 To 8
'MC.Shapes("Chr_" & iCallRow + i - 1).TextFrame.Characters.Text = Me.tbx_(i).Text ''>>>>Fehlermeldung Methode oder Datenobjekt nicht gefunden<<<
Next i
End If
If sCase = "col" Then 'hier haben die Shapes von den tbx abweichende (aber korrekt berechnete) Kennziffern
c = 1
For i = 1 To 9
'MC.Shapes("Chr_" & iCallCol + i + c - 1).TextFrame.Characters.Text = usf_Input.tbx_(i).Text ''>>>>Fehlermeldung wie oben <<<
c = c + 8
Next i
End If
MsgBox sCase 'nur zur Kontrolle des Direktfensters, das
Application.Run ("PERSONAL.XLSB!ciw") 'hier per Sub komplett gelöscht wird
Unload Me 'die USF hat ihren Job getan
End Sub
Schöne Grüße