Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Listenfeld vorbelegen

203 views
Skip to first unread message

Stefan Heinrichs

unread,
Mar 30, 2004, 8:33:20 AM3/30/04
to
Hallo,

ich möchte (Access 2000, Win 2k) ein Formular mit
Listenfeldern öffnen lassen und in einem Listenfeld
bereits einen Eintrag mit VBA markieren (DAO).

Kennt jemand den Befehl?

Der Befehl
Forms![name das formulars]![name des Listenfeldes]=wert
klappt jedenfalls nicht. Anschließend ist im Listenfeld
immer noch nichts markiert, obwohl "Wert" ein
Listeneintrag ist.

Danke im voraus

Stefan Heinrichs

Jörg Ackermann

unread,
Mar 30, 2004, 8:58:28 AM3/30/04
to
Hi,

Stefan Heinrichs schreibselte:

Doch, so sollte das gehen.
Falls du als gebundene Spalte eine andere wie
die sichtbare verwendest, mußt du diesen Wert
setzen.

Alternativ:
Standardwert: [name des Listenfeldes].Itemdata(0)
markiert Dir den ersten Eintrag.

HTH
Gruß

Ahmed Martens

unread,
Mar 30, 2004, 9:02:07 AM3/30/04
to
Hallo Stefan,

"Stefan Heinrichs" schrieb:

versuch mal folgendes:

Dim cbo As ComboBox
Set cbo = Forms![name das formulars]![name des Listenfeldes]
cbo = cbo.ItemData(cbo.ListCount - 1) 'letzter Wert
DeinFeld = cbo.Value 'Kombi-Wert
Set cbo = Nothing

Gruß Ahmed

Stefan Heinrichs

unread,
Mar 30, 2004, 9:17:46 AM3/30/04
to

>-----Originalnachricht-----

???
Mit diesen Befehlen schreibe ich die letzte Markierung
eines Listenfeldes in ein anderes Feld.
Ich will aber in einem Listenfeld eine Markierung
vornehmen (also umgekehrt).

Hast' noch'n Tipp?

Stefan Heinrichs

Stefan Heinrichs

unread,
Mar 30, 2004, 9:21:53 AM3/30/04
to

>-----Originalnachricht-----

>Hi,
>
>Stefan Heinrichs schreibselte:
>
>> Hallo,
>>
>> ich möchte (Access 2000, Win 2k) ein Formular mit
>> Listenfeldern öffnen lassen und in einem Listenfeld
>> bereits einen Eintrag mit VBA markieren (DAO).
>>
>> Kennt jemand den Befehl?
>>
>> Der Befehl
>> Forms![name das formulars]![name des Listenfeldes]=wert
>> klappt jedenfalls nicht. Anschließend ist im Listenfeld
>> immer noch nichts markiert, obwohl "Wert" ein
>> Listeneintrag ist.
>
>Doch, so sollte das gehen.
Sollte schon. Aber die Realität ist anders!

>Falls du als gebundene Spalte eine andere wie
>die sichtbare verwendest, mußt du diesen Wert
>setzen.
>
>Alternativ:
>Standardwert: [name des Listenfeldes].Itemdata(0)
>markiert Dir den ersten Eintrag.

Mein Listefeld hat nur eine Spalte.
Der Ausdruck
"[name des Listenfeldes].Itemdata(0)=Irgendwas"
führt zum Fehler 451 "Let-Prozedur der Eigenschaftist
nicht definiert, und Get-Prozedur hat kein Objekt zurück
gegeben."
Im Listenfeld werden jedoch ca. 20 verschiedene Werte
(untereinander) angezeigt.

Vielleicht noch'n Tipp?

Grüße
Stefan Heinrichs

Jörg Ackermann

unread,
Mar 30, 2004, 9:25:21 AM3/30/04
to
Hi,

Stefan Heinrichs schreibselte:

> Hast' noch'n Tipp?

Listenfeld.Value = Wert

Mehr Tricks braucht es nicht.
Hast Du evtl. Multiselect aktiviert?

Gruß

Jörg Ackermann

unread,
Mar 30, 2004, 9:27:08 AM3/30/04
to
Hi,

Stefan Heinrichs schreibselte:

> Mein Listefeld hat nur eine Spalte.
> Der Ausdruck
> "[name des Listenfeldes].Itemdata(0)=Irgendwas"
> führt zum Fehler 451 "Let-Prozedur der Eigenschaftist
> nicht definiert, und Get-Prozedur hat kein Objekt zurück
> gegeben."

Jo, so habe ich das ja auch nicht gesagt.

> Im Listenfeld werden jedoch ca. 20 verschiedene Werte
> (untereinander) angezeigt.

siehe Antwort unten

Gruß

Sven Arkasmussen

unread,
Mar 30, 2004, 10:17:23 AM3/30/04
to
Stefan Heinrichs schrieb:

> > Dim cbo As ComboBox
> > Set cbo = Forms![name das formulars]![name des
> > Listenfeldes]
> > cbo = cbo.ItemData(cbo.ListCount - 1) 'letzter Wert
> > DeinFeld = cbo.Value 'Kombi-Wert
> > Set cbo = Nothing
>
> ???
> Mit diesen Befehlen schreibe ich die letzte Markierung
> eines Listenfeldes in ein anderes Feld.

Ach ja? Und inwiefern ist in der Zeile

cbo = cbo.ItemData(cbo.ListCount - 1)

das <cbo> links vom <=> ein anderes Feld als das <cbo> rechts vom <=>?

Gut, die Zeile

DeinFeld = cbo.Value

ist für deine Zwecke überflüssig, aber es hindert dich ja auch niemand
daran, sie wegzulassen.

Salü,

Sven

--

Im Übrigen bin ich der Meinung, dass die Groß-/Kleinschreibung
abzuschaffen ist.

Stefan Heinrichs

unread,
Mar 31, 2004, 2:25:43 AM3/31/04
to

>-----Originalnachricht-----
Jo, das hab ich. Ist das bedeutend?

Gruß
Stefan

Jörg Ackermann

unread,
Mar 31, 2004, 3:39:29 AM3/31/04
to
Hi,

Stefan Heinrichs schreibselte:

>> Hast Du evtl. Multiselect aktiviert?


> Jo, das hab ich. Ist das bedeutend?

Ach was, wirklich nicht so wichtig... ;-)

Dim i As Integer
For i = 0 To Me.Liste.ListCount - 1
Me.Liste.Selected(i) = (Me.txtWert = Me.Liste.ItemData(i))
Next i

Gruß

Stefan Heinrichs

unread,
Mar 31, 2004, 7:19:29 AM3/31/04
to

>-----Originalnachricht-----

>Stefan Heinrichs schrieb:
>
>> > Dim cbo As ComboBox
>> > Set cbo = Forms![name das formulars]![name des
>> > Listenfeldes]
>> > cbo = cbo.ItemData(cbo.ListCount -
1) 'letzter Wert
>> > DeinFeld = cbo.Value 'Kombi-Wert
>> > Set cbo = Nothing
>>
>> ???
>> Mit diesen Befehlen schreibe ich die letzte Markierung
>> eines Listenfeldes in ein anderes Feld.
>
>Ach ja? Und inwiefern ist in der Zeile
>
> cbo = cbo.ItemData(cbo.ListCount - 1)
>
>das <cbo> links vom <=> ein anderes Feld als das <cbo>
rechts vom <=>?

Nein und statt des "cbo" kann ich auch "Forms![name das
formulars]![name des Listenfeldes]" schreiben und damit
auf die DIM-Deklaration verzichten.
Wie auch immer: Im Listenfeld ist kein Eintrag markiert.
Unmitelbar nach dem VBA-Kommando hat das Listefeld den
zugewiesenen Wert, aber markiert ist nix.

By the way:
Die Zuordnung "Set cbo = Forms![name das formulars]![name
des Listenfeldes]" führt zum Laufzeitfehler 13 "Typen
unverträglich". Passt die Deklaration "DIM cbo as
combobox" eigentlich dazu, daß wir hier über ein
Listenfeld reden? "Combobox" klingt so wie
Kobinationsfeld. Mit der Deklaration "DIM cbo as listbox"
kann ich diesen Fehler aber vermeiden. Nur leider führt
Dein Befehl "cbo = cbo.ItemData(cbo.ListCount - 1)" zu
keiner Markierung; auch z.B. "cbo = cbo.ItemData(2)"
hilft nicht weiter

Wat nu?
Stefan

Stefan Heinrichs

unread,
Mar 31, 2004, 7:27:44 AM3/31/04
to
>-----Originalnachricht-----

Diese Schleife soll dazu führen, daß alle Listenelemente
des Listenfeldes markiert sind?
Ich bekomme jedenfals beim Kommando "Me.Liste.Selected(i)
=..." den Laufzeitfehler 13 "Typen unverträglich" egal,
was für eine Wertzuweisung ich vornehme. (Festwert oder
der Passus "Me.Liste.ItemData(i)")

Hast' noch nen Tipp?
Bin unverändert ratlos

Grüße
Stefan

Jörg Ackermann

unread,
Mar 31, 2004, 7:44:21 AM3/31/04
to
Hi,

Stefan Heinrichs schreibselte:

>> Dim i As Integer
>> For i = 0 To Me.Liste.ListCount - 1
>> Me.Liste.Selected(i) = (Me.txtWert = Me.Liste.ItemData (i))
>> Next i
>
> Diese Schleife soll dazu führen, daß alle Listenelemente
> des Listenfeldes markiert sind?

Nein, es soll der Eintrag markiert werden, der
mit dem Eintrag in txtWert übereinstimmt. Alle
anderen werden deaktiviert.

> Ich bekomme jedenfals beim Kommando "Me.Liste.Selected(i)
> =..." den Laufzeitfehler 13 "Typen unverträglich" egal,
> was für eine Wertzuweisung ich vornehme. (Festwert oder
> der Passus "Me.Liste.ItemData(i)")

Mußt natürlich die Namen anpassen.
also:

For i = 0 To Me!DeinListenfeld.ListCount - 1
Me!DeinListenfeld.Selected(i) = (DeinWert = Me!DeinListenfeld.ItemData (i))
Next i

oder anders:

For i = 0 To Me!DeinListenfeld.ListCount - 1
If DeinWert = Me!DeinListenfeld.ItemData (i) Then
Me!DeinListenfeld.Selected(i) = True
Else
Me!DeinListenfeld.Selected(i) = False
End If
Next i

Gruß

Stefan Heinrichs

unread,
Mar 31, 2004, 7:54:36 AM3/31/04
to

>-----Originalnachricht-----

Super, so funktionierts: Der Eintrag wird markiert.
Vielen Dank!

Stefan

Sven Arkasmussen

unread,
Mar 31, 2004, 9:45:15 AM3/31/04
to
Stefan Heinrichs schrieb:

> Nein

Mehr wollte ich auch gar nicht gesagt haben. Hätte ich aber sollen,
wie es scheint.

> und statt des "cbo" kann ich auch "Forms![name das
> formulars]![name des Listenfeldes]" schreiben und damit
> auf die DIM-Deklaration verzichten.

Da würde ich dann doch lieber <Me![Name des Listenfeldes]> nehmen.

> Wie auch immer: Im Listenfeld ist kein Eintrag markiert.
> Unmitelbar nach dem VBA-Kommando hat das Listefeld den
> zugewiesenen Wert, aber markiert ist nix.

Das steht inzwischen ja bei Jörg Ackermann.

> By the way:
> Die Zuordnung "Set cbo = Forms![name das formulars]![name
> des Listenfeldes]" führt zum Laufzeitfehler 13 "Typen
> unverträglich". Passt die Deklaration "DIM cbo as
> combobox" eigentlich dazu, daß wir hier über ein
> Listenfeld reden?

Wie der Fehler 13 vermuten lässt natürlich nicht.

> "Combobox" klingt so wie Kombinationsfeld.

Nicht zu unrecht.

> Mit der Deklaration "DIM cbo as listbox" kann ich diesen Fehler
> aber vermeiden. Nur leider führt Dein Befehl
> "cbo = cbo.ItemData(cbo.ListCount - 1)"
> zu keiner Markierung

Das ist gar nicht "mein" Befehl, sondern der von Ahmed Martens.
Ich wollte lediglich die Behauptung nicht unwidersprochen stehen
lassen, dass mit diesem Befehl ein anderes Steuerelement gesetzt
würde.

Ahmed Martens

unread,
Apr 1, 2004, 12:57:58 AM4/1/04
to
Hallo Stefan,

[...]

ich bitte vielmals um Entschuldigung wenn ich Dich nicht richtig verstanden
hatte. Es scheint hier wohl zu einigen Verwirrungen geführt zu haben.

Also bei mir wird mit folgendem Code eine Zeile markiert:
Me.MeineListe.ListIndex = 10 (11. Zeile)

Wie es bei Multiselect ist weiß ich nicht.

Gruß Ahmed


0 new messages