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
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ß
"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
???
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
>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
Stefan Heinrichs schreibselte:
> Hast' noch'n Tipp?
Listenfeld.Value = Wert
Mehr Tricks braucht es nicht.
Hast Du evtl. Multiselect aktiviert?
Gruß
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ß
> > 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.
Gruß
Stefan
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ß
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
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
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ß
Super, so funktionierts: Der Eintrag wird markiert.
Vielen Dank!
Stefan
> 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.
[...]
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