Forum: PC-Programmierung VBS - In einer Schleife auf Objekte zugreifen


von Micha T. (Gast)


Lesenswert?

Hallo zusammen,

ich bekomms einfach nicht hin in einer Schleife auf Objekte zuzugreifen, 
vieleicht kann mir hier einer einen Anstoss geben

Ich möchte in einer Schleife auf den Inhalt von Editboxen zugreifen.

mystring = editbox1.Text & editbox2.Text... usw  in einer Schleife.

Wie bekomm ich die Nummer der editbox variabel?

mein Versuch mit:

tempstring = "editbox" & x & ".Text" und dann den zusammengesetzten 
String zu verwenden ergibt ja für den Inhalt von tempstring:
editbox1.Texteditbox2.Text....
Ich hätte hier aber gern den Inhalt der editboxen.

Gruß Micha

von Tobi H. (tobi-) Benutzerseite


Lesenswert?

Pack die Verweise auf die Editboxen in ein Array (oder wie auch immer 
das da heißt) und iterier darüber

von Micha T. (Gast)


Lesenswert?

Da hab ich dann das selbe Problem wie oben.

von Simon K. (simon) Benutzerseite


Lesenswert?

Micha T. wrote:
> Da hab ich dann das selbe Problem wie oben.

Nö.

von Recruiting Tag - Besucher (Gast)


Lesenswert?

Hallo Micha,

du könntest auch ein Collection-Objekt von Visual Basic benutzen.

siehe auch http://msdn.microsoft.com/en-us/library/a1y8b3b3.aspx

Bsp.:

' neue Instanz vom Collection-Objekt
Dim colText As New Collection()

Dim strString As String

' Hinzufügen der einzelnen Texte zum Collection-Objekt
colText.Add(editbox1.Text , "Box1")
colText.Add(editbox2.Text , "Box2")
colText.Add(editbox3.Text , "Box3")
colText.Add(editbox4.Text , "Box4")

' Schleifendurchlauf über die Texte aller Editboxen
For each strString in colText
    msgbox("Inhalt der Editbox: " & strString)
Next strString

Der Zugriff auf einzelne Elemente ist dann auch in der Form

  Dim Text1 as String

  Text1 = colText.Item("Box1")

möglich.

Über alle Elemente auch in der Form

 dim i as Integer

 For i = 1 to 4

   msgbox("Der Inhalt von Editbox" & CStr(i) & _
          " ist " & colText.Item("Box"&CStr(i)))
 next i

Ich kann die angebenen Codefragment leider nicht testen, musst also 
einfach ausprobieren.

Gruß

von Daniel V. (volte)


Lesenswert?

Finde die Idee von Recruiting Tag - Besucher ist ein sehr guter 
Lösungsansatz, Selbst eine neue Instanz dieser Klasse zu erzeugen ist 
wohl der einzige Weg der auf die schnelle möglich erscheint.
MFG

von poahneeh (Gast)


Lesenswert?

VBS und editbox, lass mich raten, das ist eine HTA-Application. Wenn dem 
so ist, kannst du mit

   Window.Document.All.Item("editbox" & i).Text = "wert"

oder

   a = Window.Document.All.Item("editbox" & i).Text

darauf zugreifen. In HTA können mehrere Textfelder, wie in VB6, den 
selben Namen haben. Dann ist das Problem mit

   For Each oText in Editbox
      oText.Text = "test"
   Next

zu lösen. VBScript, VB6 oder HTA? In VBScript gibt es keine Textboxen 
und dergleichen, ausser du bindest irgendwelche Active-X-Objekte ein die 
Textboxen enthalten. Aber wozu? Die wirst du in VBS niemals zu Gesicht 
bekommen.

Wenn du was zu spicken haben willst, kannste dir gerne den Code aus 
meinem ATMega8 Flash Tool unter atm.pravec.de reinziehn. Da sind jede 
Menge Textfelder, DopDowns und alles kreuz und quer drin. HTA kann ich 
nur empfehlen. Einfacher gehts wirklich nicht mehr.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.