ComboBoxen mit Access-Datensätzen füllen

Hallo Zusammen
Ich habe ein kleines Problem.

Vorab, ich arbeite mit Office 2007.

Ich arbeite mit einem UserForm, dass mit Datensätzen aus einer Access-DB gefüllt wird.

Nun liegt folgendes Problem vor:

Ich möchte eine ComboBox mit den Daten aus einer Tabelle füllen

Hier einmal mein Code den ich verwende:

Set rs = db.OpenRecordset("Select Test.Feld1 From Test Order By Feld1", dbOpenDynaset)

Do While Not rs.EOF

 ComboBox1.AddItem rs!Feld1
 rs.MoveNext

Loop

Nun dauert dies bei 1000 Datensätzen einfach zu lange!! :frowning:

Gibt es einen effizienteren Weg? So wie bei den Excel-Tabellen, wo man sagen kann, dass er einfach alle Datensätz aus einer bestimmten Spalte nehmen soll.

Danke für eure Hilfe!!!

Gruss Jochen

Ich arbeite mit einem UserForm, dass mit Datensätzen aus einer
Access-DB gefüllt wird.
Ich möchte eine ComboBox mit den Daten aus einer Tabelle
füllen
Gibt es einen effizienteren Weg? So wie bei den
Excel-Tabellen, wo man sagen kann, dass er einfach alle
Datensätz aus einer bestimmten Spalte nehmen soll.

Hallo Jochen,

scheinbar hat auch die CB in Access die Eigenschaft RowSource:
http://dbwiki.net/wiki/Access_Anf%C3%A4nger:_ComboBo…

Gruß
Reinhard

Hallo Reinhard
Das schaut auf den ersten Blick echt super aus. :wink:

Aber nun habe ich doch eine while-Schleife, die durch alle 1000 Produkte durchgeht.

Ich bin auf der Suche nach einer Funktion, die einfach sagt:

RowSource von ComboBox = Spalte soundso aus Tabelle.

Und dann werden automatisch alle Datensätze der ComboBox zugeschrieben.

Ist das soweit klar? Ich denke, ich habe das am Anfang nicht klar genug formuliert.

Danke

Jochen

Aber nun habe ich doch eine while-Schleife, die durch alle
1000 Produkte durchgeht.

Ich bin auf der Suche nach einer Funktion, die einfach sagt:

RowSource von ComboBox = Spalte soundso aus Tabelle.

Hallo Jochen,

sorry, kam wohl mißverständlich rüber, in Excel brauchst du keine Schleife, da langt ein Einzeiler:
ComboBox1.rowSource=„B4:B200“
oder manuell die Eigenschaft eintragen wie hier auf dem Bild zu sehen:
http://www.uploadagent.de/show-185280-1340187978.html

Gruß
Reinhard

Hallo Reinhard
Ich glaube jetzt weiss ich, wo mein Fehler in der Erklärung ist. :s

Darum hier nochmals:

Ich habe ein UserForm das in Excel aufgerufen wird.

Aber es wird mit Datensätzen aus Access gefüllt.
(zB. Alle Datensätze aus Feld1 in Tabelle1)

Darum geht der Ansatz mit: RowSource = B1:B1000 nicht.

Ich hoffe nun ist es klar. Sorry für die Unklarheiten!!!

Gruss Jochen

Hallo Jochen,

Ich habe ein UserForm das in Excel aufgerufen wird.
Aber es wird mit Datensätzen aus Access gefüllt.
(zB. Alle Datensätze aus Feld1 in Tabelle1)

Feld1 ist der Spaltentitel?
Ich habe von Access nicht die gerinste Ahnung. Vor einem Jahr wollte ich mir in Access eine einfache Testtabelle anlegen,
paar Daten mit den Spaltentiteln: name, Vorname, Straße, Ort.
Naja, nach ner halben Stunde hatte ich das fast geschafft.

Und jetzt bei deiner Anfrage, irgendwie hatte ich da wohl wieder
ein falsches Access-Objekt erwischt, in Vba fehlte „userform“ bei
„Einfügen“. (access 2000)

Darum geht der Ansatz mit: RowSource = B1:B1000 nicht.

Okay, direkt nicht, aber was schnell gehen müßte ist in Excel in
der UF in der CB B1:B1000 als Rowsource anzugeben und beim UF-Start
da diese Spalte in Access in Excel in b1:B1000 reinzukopieren.

Mit Vba von Excel auf Access zuzugreifen ist recht einfach.
Google mal nach createobject, getobject access.application.

Was ich wie oben geschildert logischerweise auch nicht weiß wie dann
die Syntax für die Codezeile lautet um mit einem Befehl
einen Spaltenbereich von Access nach Excel zu kopieren.

Aber schau mal die Googletreffer durch, die dortigen Codes haben ja nicht ohne Grund auf Access zugegriffen, z.B. dort was eingefügt, oder dort was rauskopiert.

Übrigens, hier im VB-Brett ist Access- und AccessVbA-Wissen nicht sehr stark vorhanden. Ggfs. ist das Accessbrett von w-w-w da besser
geeignet.

Wenn also du und ich mit meinen minimalsten
Unterstützungsmöglichkeiten „das“ nicht hinkriegen, maile den hiesigen Mod an und bitte ihn nett ums Beamen in das andere Brett.

Gruß
Reinhard

Hallo Reinhard
Danke für die Antwort.

Ich werd mich Heute mal schlau machen und dann sehen wie weit ich komme. :smile:

Danke auf jeden Fall für die Hilfe

Gruss Jochen

Grüezi zusammen

Ich habe ein UserForm das in Excel aufgerufen wird.

Aber es wird mit Datensätzen aus Access gefüllt.
(zB. Alle Datensätze aus Feld1 in Tabelle1)

Darum geht der Ansatz mit: RowSource = B1:B1000 nicht.

Ja, das ist mit den Daten aus einer Abfrage so nicht möglich.

Aber Du könntest doch die Abfrage dieser einen Spalte in einem Tabellenblatt in Excel ausgeben lassen und dich dann aus der CB darauf beziehen. Dann ist IMO nicht mal VBA notwendig sondern Du kannst einfach über Externe Daten diese aus Access importieren.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Thomas
Dieser Ansatz ist eigentlich nicht schlecht. Doch ich brauch einen dynamischen Zugriff auf die Tabelle. Da sich diese Auswahl bei jedem Aufruf der UserForm ergänzen kann. :frowning:

Zudem hätte ich gerne nur mit den Daten der Tabelle gearbeitet. So dass ich eben nicht nochmals alles in Excel kopieren muss. Da könnte ich ja gleich die Daten in Excel ablegen.

Wenn das jedoch nicht geht, dann geht es halt nicht. Dann muss ich wohl oder übel mit der Do-Schleife arbeiten.

Danke trotzdem!!!

Jochen

Hallo Zusammen
Ich habe einen anderen Ansatz mir überlegt.

Da meine ComboBoxen alle mit dem gleichen Datensatz gefüllt werden, könnte ich einfach eine ComboBox füllen, und dann die anderen irgendwie gleich die erste setzen.

Geht das? Kann man die RowSource von ComboBoxen einander gleichsetzen?

Danke für die Hilfe!!!

Gruss jochen

Da meine ComboBoxen alle mit dem gleichen Datensatz gefüllt
werden, könnte ich einfach eine ComboBox füllen, und dann die
anderen irgendwie gleich die erste setzen.
Geht das? Kann man die RowSource von ComboBoxen einander
gleichsetzen?

Hallo Jochen,

ich dachte du liest die Werte ein, dann haste keine RowSource.
Was vllt. ginge wäre ComboBox2.List=ComboBox1.List oder so.

Übrigens, ich meinte das ernst daß ich ein Access-DAU bin
und nichtmal ne UF einfügen kann.
Nur wenn du eine Datei hochlädst wo eine UF und dein andrer Code drin
ist habe ich überhaupt Chancen dir zu helfen.

Mir bekannte Dinge blind nach Access zu übertragen kann mal klappen,
sicherer wäre ich könnte das testen, was ja nicht bedeutet daß ich das löse :smile:

Gruß
Reinhard

Hallo Reinhard
Das mit der Access-Verbindung ist echt blöd. :-S Ich habe es jetzt auch auf dem anderen Brett zeigen lassen.

Was dein Tipp angeht:

ich dachte du liest die Werte ein, dann haste keine RowSource.
Was vllt. ginge wäre ComboBox2.List=ComboBox1.List oder so.

Der hat super geklappt. :smiley:

Danke

Jochen