20. december 2011 - 09:54Der er
5 kommentarer og 1 løsning
Datavalidering > Liste
Hejsa
Jeg har et ark med mange celler indeholdende lister (datavalidering), som peger på en kolonne med mange data. Problemet er, at listen er meget lang og det er svært at finde det rigtige nummer når man scroller i den. Listen er sorteret nummerisk, og jeg håbede, at jeg kunne taste et nummer og derved flytte cursoren ned i listen, men det virker desværre ikke - den melder bare fejl... Ikke nok med det, men så starter listen også nedefra når jeg åbner den. Er der nogen der har en idé til hvordan jeg kan løse problemet? Please! :)
På det aktuelle ark er der oprettet en combobox og en knap.
Knappen opdaterer comboboxens liste via et kald til proceduren "FyldListe", som er placeret i Module1.
Ved et valg af værdi på listen, skrives værdien i cellen under/bag comboboxen ... hvorefter cellen til højre for comboboxen bruger den valgte værdi i en IF/VLOOKUP formel ...
Opdaterings knappen ... 'knap - Opdater liste Private Sub cmdOpdater_Click()
'kald proceduren - FyldListe i Module1 Module1.FyldListe
'vælg den første værdi på listen ActiveSheet.ComboBox1.ListIndex = 0
End Sub
Proceduren i module1 ... 'FyldListe procedure Sub FyldListe() Dim r As Integer
'ryd listen ActiveSheet.ComboBox1.Clear
'tildel variablen r, rækkenummeret på sidste række indeholdende data i kolonne K r = ActiveSheet.Range("K65536").End(xlUp).Row
'for hver celle i området K16 til sidste celle med data For Each c In Range("K16:K" & r)
'hvis cellen ikke er tom If c.Value <> "" Then
'tilføj celle værdi til listen ActiveSheet.ComboBox1.AddItem c.Value
End If
Next c
End Sub
Change hændelse på comboboxen ... 'Change hændelse på Combobox1 Private Sub ComboBox1_Change()
'hvis der ikke er valgt nogen værdi på listen If ActiveSheet.ComboBox1.Value = "" Then
'sæt celle C18 på sheet1 = "" ActiveSheet.Range("C18").Value = ""
'hvis der er valgt en værdi på listen Else
'sæt celle C18 på sheet1 = den valgte værdi fra listen ActiveSheet.Range("C18").Value = CVar(ActiveSheet.ComboBox1.Value)
End If
End Sub
Og change hændelse på arket ... 'Change hændelse på arket (Sheet1) Private Sub Worksheet_Change(ByVal Target As Range)
'hvis der tastes en værdi på listen, der ikke findes If ActiveSheet.Range("D18").Text = "#N/A" Then
'informer herom ... MsgBox "Den valgte værdi på listen findes ikke", vbInformation
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.