Steuerelemente dynamisch hinzufügen

NeMeSiS1987

Erfahrenes Mitglied
Hallo,

hab diesen Code aus dem Netz. Hab eine Textbox mit Name Text1 angelegt. Funktioniertt aber nicht so richtig. Bei der Zeile "Load Text(i)" kommt immer ein "Type mismatch". Und wo in den Properties muss ich den Index eintragen? Kann mir da jemand helfen?

Code:
Private Sub Form_Load()
  Dim i As Integer

  ' 5 weitere Textboxen laden und anzeigen
  For i = 1 To 5
    ' Textfeld laden
    Load Text1(i)

    With Text1(i)
      ' Neues Textfeld positionieren
      ' (immer unterhalb des vorigen Textfeldes)
      .Top = Text1(i - 1).Top + Text1(i - 1).Height + 105

      ' Wichtig! Neues Textfeld sichtbar machen!
      .Visible = True

      ' Text-Eigenschaft setzen
      .Text = "Textfeld " & CStr(i + 1)
    End With
  Next i
End Sub
 
Hallo

Bei den Eigenschaften der TextBox (Text1) gibt es den Eintrag Index, da trägst Du 0 ein.
Dann sollte Dein Code funktionieren.
 

Anhänge

  • TextBox.JPG
    TextBox.JPG
    17,4 KB · Aufrufe: 33
Ich programmiere aber in Access 2003 und da gibts nur eine Eigenschaft "Tab Index" und die ist auf 0...

Code:
Private Sub Form_Load()
  Dim objTextBox As MSForms.TextBox

  Set objTextBox = Me.Controls.Add( _
        "Forms.TextBox.1", "txtDemo1", True)
  With objTextBox
    .Left = 6
    .Top = 6
    .Width = 72
    .Height = 18
  End With
  Set objTextBox = Nothing
End Sub

Kann es sein, dass es auch so ähnlich geht?
 
Teste mal, ob diese Variante hier für dich funktioniert (hab mit Access leider auch wenig Ahnung).

EDIT: Hab mich mal in Word-VBA gespielt (Access dürfte ähnlich sein), mit
Visual Basic:
Set newText1 = UserForm1.Controls.Add("Forms.TextBox.1", "neuText1")
kann ich auf einer Form ein neues Control erstellen. Schau dir dazu auch die VBA-Hilfe zu Add an.


Der Doc!
 
Zuletzt bearbeitet:
Der Compiler kennt den Befehl Attribute nicht. Aber macht auch nichts. Ich hab das ganze jetzt anders gelöst. Ich lass einfach alle Elemente anzeigen aber dann nur die benötigten auslesen.

Danke trotzdem!

Grüße,

NeMeSiS
 
Zurück