Avatar billede Den_nemme Nybegynder
20. december 2011 - 09:54 Der 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! :)
Avatar billede Ialocin Novice
20. december 2011 - 12:28 #1
Hej Den_nemme

Hvilken version af Excel skriver du i ??

Hvis Excel 2003 ?, så kan du evt. poste en mail med dit ark, så skal jeg se om det er noget jeg kan løse ?


Med venlig hilsen, Nicolai
Avatar billede Den_nemme Nybegynder
20. december 2011 - 13:12 #2
Hmmm Excel 2007... ØV!
Avatar billede Ialocin Novice
20. december 2011 - 13:29 #3
Hej Den_nemme

Prøv at sende alligevel :o)
nicolaifogt@gmail.com

Med venlig hilsen, Nicolai
Avatar billede Ialocin Novice
22. december 2011 - 21:38 #4
Hej Den_nemme

Hermed den løsning, som vi fandt frem til :o)

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

    End If

End Sub



Med venlig hilsen, Nicolai
Avatar billede Den_nemme Nybegynder
22. december 2011 - 21:44 #5
Endnu engang tak her fra Århus ;-)
Avatar billede Ialocin Novice
22. december 2011 - 23:52 #6
Selv tak ... her fra Bjerringbro :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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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