type mit for each durchgehen

koma666

Mitglied
ich hab 2 types die sehen ungefähr so aus

private type myblatt
spalte1 as string
spalte2 as string
spalte3 as string
spalte4 as string
spalte5 as string
spalte6 as string
spalte7 as string
spalte8 as string
spalte9 as string
spalte10 as string
end type

private type myheft
seite1 as myblatt
seite2 as myblatt
seite3 as myblatt
seite4 as myblatt
end type

jetzt will ich mit einer for each schleife durchgehen

also so in der art
dim heft as myheft
for each myblatt in heft
.spalte1 = "hallo"
.spalte2 = "du da"
next myblatt

damit halt danach in
heft.seite1.spalte1 = "hallo"
heft.seite1.spalte2 = "du da"
heft.seite2.spalte1 = "hallo"
heft.seite2.spalte1 = "du da"
heft.seite3.spalte1 = "hallo"
heft.seite3.spalte1 = "du da"
...

steht.
giebts da ne möglichkeit?
das der code von oben nie gehen kann ist mir klar, ist nur als beispiel gedacht, damit ihr wisst was ich will :)
 
Zuletzt bearbeitet:
warum nimmst du nich einfach ein zweidimensionales Feld?
Das wäre doch viel einfacher.
ODer hat das mit den Types einen bestimmten Grund, so dass du kein Feld nehmen kannst??
 
genau das hab ich gemacht, aber trozdem würd ich gern wissen wie es geht :)
is doch interessant findest du nicht?

und wenn wir schon dabei sind wie kann ich sowas mit 30 checkboxen machen ?

damit ich ned jede einzeln abfragen muss
 
mit eigenen datentypen geht das soweit ich weiss gar nicht. mit objekten sieht die ganze geschichte dann allerdings schon wieder anders aus.
da brauchst du nur eine variable vom datentyp control, mit der du alle steuerelemente im formular durchläufst:
Code:
Dim c As Control

For Each c In Me.Controls
    If TypeOf c Is CheckBox Then
        c.Enabled = False
        ' oder was auch immer du sonst mit der checkbox machen willst ...
    End If
Next

eventuell reicht für deine zwecke aber auch ein steuerelementfeld, indem du einfach alle checkboxen gleich benennst und jede einzelne nur durch ihren index ansprichst. also quasi ein array aus steuerelementen.
 
@asphyxia

wegen index!
weist du vielleicht warum in VBA die TextBoxen keinen Index haben?
das stört extrem...
was wär denn die einfachste methode dies zu beheben?
ich dachte da an ein steuerelement in vb schreiben und dann einbinden... weil die standart text box von vb hab ich net gefunden!
 
das kommt drauf an, welches vba du meinst - word, access, excel, ...?
access hat jedenfalls andere steuerelemente, die auch gleich an die datenbank gebunden sind. die normalen steuerelemente aus vb kannst du da soweit ich weiss nicht benutzen und einen index (für steuerelementfelder) gibt es unter access basic auch nicht.
 
das ist ja shit
ohne index!!!
weis ja nicht was sich MS dabei gedacht hat aber wird schon einen sinn haben.

das problem ist man kann keine steuerelemte direkt einbinden

d.h. erst eins machen
dann registrieren
dann hat man es drin
deswegen hab ich gehofft das es einen einfacheren weg gibt
weil der nachteil bei der methode ist es läuft nur auf den einen
Rechner
auf den andern müsste man diese neuen steuerelemente erneut registrieren.

p.s ich nehm vba von word
 
Zurück