17. maj 2002 - 14:37Der er
13 kommentarer og 1 løsning
Listbox.add Det må da være muligt
Hej Hvordan tilføjer jeg via visual basic elementer til en liste. Jeg har gjort det i xp uden problem. Selv om jeg bruger deployment wizard, genkendes metoden ikke i -97 eller 2000. Det må da være muligt at føje elementer til. Der er et eksempel i solutions.mdb, men tilsyneladende virker det ikke. Hvordan gøres det? Jeg har faktisk set et par punkter i hjælp om emnet, men det skyldes formentlig bare at det er muligt i ren visual basic og ikke access.
Listbokse skal enten være knyttet til en tabel, en værdiliste (tekststreng adskilt med semicolon) eller en funktion (sidstnævnte er lidt kompliceret)
Så du kan enten lave en tmp-tabel, som du kan tilføje og fjerne fra eller du kan sætte listboksens rækkekildetype til "Værdiliste" og derefter opbygge Rækkekilden vha VBA.
Det er vist gangske rigtigt lavet lidt om i XP...men har ikke haft mulighed for at kigge på det.
Jeg har allerede af nød lavet en tmptabel og peger så på den, det undrer mig bare at det ikke er muligt. Jeg venter lige og ser om der kommer forslag til løsning uden tmp. DB-størrelsen vokser uhensigsmæssigt.
Ved at indsætte en fra msForms kan man bruge kode ala det her:
Dim i As Integer Dim CtlList As MSForms.ListBox Set CtlList = ActiveXKtl3.Object CtlList.ColumnCount = 2 For i = 0 To 10 CtlList.AddItem CtlList.Column(0, i) = i CtlList.Column(1, i) = i * 10 Next i
til Niels Din 3. linie, skal den pege på det objekt jeg har på formen (når jeg har valgt den type du angav) Jeg omdøber mit kontrolelement på formen til at hedde MyList, men min linie: set CtlList = Minform.MyList giver fejl.
Til Terry: Jeg har også prøvet dine eksempler på både traditionel listbox og den fra microsoft forms listbox, men kan ikke få dem til at køre.
Til Niels Så har jeg fået det skruet rigtigt sammen. Ændrede på erklæringen af objektet, da jeg ikke havde held til at angive den via ActiveX... Forklar gerne nærmere om syntaksen.
Att. Terry Is it correct that the examples you mentioned, only apply to XP?
Her er et eks på brugen, med kommentarer, efter bedste evne: Option Compare Database Option Explicit 'erklære ctllist som listboxobjekt - global Private CtlList As MSForms.ListBox
Private Sub Form_Close() 'Frigør memory hvis ikke formen selv gør det Set CtlList = Nothing End Sub Private Sub Form_Load() Dim i As Integer 'en gang for alle erklæres objectet ctlList 'HUSK der er forskel på objektet ctlList og 'ActiveX Mylist Set CtlList = Me.MyList__.Object 'listen fyldes CtlList.ColumnCount = 2 For i = 0 To 10 CtlList.AddItem CtlList.Column(0, i) = i CtlList.Column(1, i) = i * 10 Next i End Sub Private Sub MyList___Click() 'Listen bruges 'Vælg objekt øverst til venstre og 'hændelse øverst til højre i 'dette vindue MsgBox CtlList.Value End Sub
Hvis du stiller dig på en metode (eks addItem) og trykker F1 får du hjælpen til msforms og ikke Access listebox. Det er interressant at sætte nogle stop i koden og følge variablerne i 'locals window' her kan du se både værdier og objekttyper af bl.a. ctlList.
Helt sjovt at tage pts fra Thomas og Terry - he he
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.