Avatar billede mr_niels Nybegynder
25. februar 2002 - 10:33 Der er 5 kommentarer og
1 løsning

Indtastning i Combobox

Jeg har lavet en macro hvor jeg bl.a. skal foretage et valg blandt værdier i en combobox. Hvis den ønskede værdi ikke findes på listen skal jeg tilføje den. Derfor spørgsmålet: Er det muligt at skrive direkte i comboboxen og få macroen til at tilføje den nye værdi til værdilisten? Jeg tænker lidt på at hvis jeg skal vælge byen "Gentofte" i comboboxen, så taster jeg først "G" og første værdi der starter med "G" kommer frem. Jeg vil gerne kunne blive ved med at stave mig igennem navnet og hvis navnet findes så kommer det frem. Ellers staver jeg det helt ud og tilføjer til listen.
Avatar billede mr_niels Nybegynder
25. februar 2002 - 10:36 #1
Jeg fik lige at vide at den funktion jeg gerne vil have tilføjet til min combobox hedder "autoudførelse" :o)
Avatar billede bak Forsker
25. februar 2002 - 17:47 #2
Det er muligt, men kun hvis værdilisten ikke er lagt ind i koden.
Avatar billede mr_niels Nybegynder
25. februar 2002 - 18:17 #3
Værdilisten bliver taget fra arket og lagt ind i comboboxen hvergang macroen startes med:

Private Sub Userform_Initialize()
Dim row As Integer
row = 10
While Worksheets(1).Cells(row, 4) <> ""
    Butik1.AddItem Cells(row, 4).Value
    row = row + 1
Wend
End sub
Avatar billede bak Forsker
25. februar 2002 - 20:05 #4
Hvis du navngiver området hvor du henter data fra starten, (fx. frugt) vil denne makro checke om det du har skrevet i comboboxen matcher. hvis ikke udvider den det navngivne område og indsætter værdien fra comboboxen.
mht. autoudfyld skal du i properties / egenskaber finde MatchEntry og sætte den til 1 hvis den ikke er det i forvejen.

Private Sub ComboBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If ComboBox1.MatchFound = False Then
test = MsgBox("Findes ikke på listen. Ønsker du at indsætte dette??", vbOKCancel)
If test = 1 Then
NewEntry = ComboBox1.Value
    Sheet1.Range("frugt").End(xlDown).Offset(1, 0) = NewEntry
    Sheet1.Range("frugt").Resize(Sheet1.Range("frugt").Rows.Count + 1, 1).Name = "frugt"
End If
End If
End Sub
Avatar billede bak Forsker
25. februar 2002 - 20:52 #5
Private Sub UserForm_Initialize()
Set f = Worksheets(1).Range("frugt")
For Each c In f.Cells
    ComboBox1.AddItem (c.Value)
Next
End Sub
Avatar billede mr_niels Nybegynder
26. februar 2002 - 08:23 #6
Tusind tak, det virker perfekt.......og jeg som troede at jeg var ved at få fod på Excel :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester