Avatar billede denero Juniormester
18. december 2011 - 13:49 Der er 13 kommentarer og
1 løsning

Tomme celler i RowSource

Uddrag af kode

Private Sub UserForm_activate()

    Sheets("Ark1").Select

   
    ComboBox1.Value = ActiveCell


End Sub


og egenskaber er "MatchRequired=True og RowSource=MinListe

Spørgsmål:

Hvorledes undgår jeg at tomme celler i RowSource ikke kommer med i Combobox?
Avatar billede svla Mester
18. december 2011 - 20:30 #1
Hej

Jeg har læst spørgsmålet og forstået det således, at du der hvor du har "Minliste", er der opstået tomme celler, muligvis ved at du evt. selv har slettet nogle data i cellerne, så du får disse tomme linier i din Combobox.

Jeg vil foreslå at du der hvor du har din "Minliste" foretager en sortering (stigende) af hele listen, herved får du i din Combobox kun tomme linier nederst på listen, og så må du assepterer disse tomme liner i comboboksen, - ellers skal du lave en VBA-kode som automatisk opdaterer "MinListe" hvis det kan lade sig gøre, - men det går nok ikke hvis din "Minliste" ikke er på et Ark for sig selv.
Avatar billede Ialocin Novice
18. december 2011 - 21:22 #2
Hej denero

Hvordan fylder du din combobox / MinListe ? ... hvorfra henter du data til listen ?

Med venlig hilsen, Nicolai
Avatar billede denero Juniormester
20. december 2011 - 09:46 #3
Alle numre fra listen står fra øverst i kolonne b, ark 1. Denne kolonne bliver fyldt ud ved indtastning via en anden userform således, at nye data bliver indsat i øverste linje(indskudt før "skrivning" af data). Dvs. at der altid er fyldt i hver linje fra oven af. Det, jeg ønsker, er, at der i listen i comboxen kun bliver medtaget data fra fyldte celler fra denne kolonne.
Avatar billede Ialocin Novice
20. december 2011 - 10:35 #4
Hej denero

Kan du evt. bruge følgende VBA kode ...
Koden ta´r p.t. ikke højde for eventuel sletning af en række med efterfølgende genindlæsning af listen ... men den kan laves.

Kig på det og lad høre ?



Sub FyldCombobox()
Dim r As Integer

   
        'tøb listen
        Me.ComboBox1.Clear
       
       
       
        'tildel variablen r, rækkenummeret på sidste række indeholdende data
        r = ActiveSheet.Range("B65536").End(xlUp).Row
   
        'for hver celle i området B1 til sidste celle med data
        For Each c In Range("B1:B" & r)
       
            'tilføj celle værdi til listen
            Me.ComboBox1.AddItem c.Value
       
        Next c
       
End Sub



Med venlig hilsen, Nicolai
Avatar billede Ialocin Novice
20. december 2011 - 12:39 #5
Hej denero

Og her, hvis der er tomme celler i kolonne D.


Sub FyldCombobox()
Dim r As Integer

   
        'tøb listen
        Me.ComboBox1.Clear
       
       
       
        'tildel variablen r, rækkenummeret på sidste række indeholdende data
        r = ActiveSheet.Range("B65536").End(xlUp).Row
   
        'for hver celle i området B1 til sidste celle med data
        For Each c In Range("B1:B" & r)
       
            'hvis cellen ikke er tom
            If c.Value <> "" Then
       
                'tilføj celle værdi til listen
                Me.ComboBox1.AddItem c.Value
       
            End If
       
        Next c
       
End Sub


Med venlig hilsen, Nicolai
Avatar billede svla Mester
20. december 2011 - 17:25 #6
Hej Lalocin

Jeg har testet dit forslag og synes den er perfekt, jeg har selv ved flere lejligheder lige manglet den måde og fylde en comboboks på, jeg fandt så på noget helt andet mere indviklet som er lidt svært og forklare
Dit forslag vil jeg gerne bruge ved en senere lejlighed, -fint forslag.
Avatar billede Ialocin Novice
20. december 2011 - 22:01 #7
Hej svla

Du er velkommen til at bruge løs :o)

Jeg er mere spændt på om det er sådan, at denero ønsker det ??

Med venlig hilsen, Nicolai
Avatar billede denero Juniormester
21. december 2011 - 00:00 #8
Tak tak

Vender tilbage, men er hængt lidt op.
Avatar billede denero Juniormester
21. december 2011 - 08:18 #9
Hej Nicolai

Virker - lige det jeg søgte. Jeg har lige rettet det til, til mit brug. Kan man samtidig mrd, at man aktiverer userform, tjekke, at der er markeret en celle i den rigtige kolonne og evt. ark, hvis ikke, så en fejlmeddelse - ok - tilbage til kolonne b1 og evt. ark?

Private Sub UserForm_Activate()
Dim r As Integer

    'Vælg ark - her er "rækken"
    Sheets("ArkFindEnBilResultatFraFaktura").Select

    'tøm listen
    Me.ComboBox1.Clear
   
    'Indsæt værdi fra aktiv celle - den jeg peger på i ark inden kald af userform
    ComboBox1.Value = ActiveCell
         
    'tildel variablen r, rækkenummeret på sidste række indeholdende data
    r = ActiveSheet.Range("B65536").End(xlUp).Row
   
    'for hver celle i området B2 til sidste celle med data
    For Each c In Range("B2:B" & r)
       
    'hvis cellen ikke er tom
    If c.Value <> "" Then
       
    'tilføj celle værdi til listen
    Me.ComboBox1.AddItem c.Value
       
            End If
       
        Next c
       
End Sub
Avatar billede Ialocin Novice
21. december 2011 - 09:27 #10
Hej denero

Godt at høre ... så langt :o)

Skal så lige være helt med på dit spørgsmål ?

Som det første, når userformen aktiveres, vil du gerne tjekke om det "rigtige" ark samt en celle i kolonne B er valgt ... og er det, det ark du vælger med linien: Sheets("ArkFindEnBilResultatFraFaktura").Select  ???


Med venlig hilsen, Nicolai
Avatar billede Ialocin Novice
21. december 2011 - 09:36 #11
Hej denero

Hvad er tanken med linien:
'Indsæt værdi fra aktiv celle - den jeg peger på i ark inden kald af userform
    ComboBox1.Value = ActiveCell

Med venlig hilsen, Nicolai
Avatar billede Ialocin Novice
21. december 2011 - 11:50 #12
Hej denero

Nu har jeg gættet mig lidt frem :o)

Prøv denne procedure ...
Du skal dog selv lige ændre diverse "Sheet1" til navnet på dit ark.


Private Sub UserForm_Activate()
Dim r As Integer
Dim kolonne As String

    'Vælg ark - her er "rækken"
    Sheets("Sheet1").Select

       
    'tildel kolonne bogstavet for kolonnen med den aktive celle
    kolonne = Split(ActiveCell.Address, "$")(1)

   
    'hvis det aktive arknavn er Sheet1 og den aktive celle er i kolonne B
    If ActiveSheet.Name = "Sheet1" And kolonne = "B" Then
   
            'tøm listen
            Sheet1.ComboBox1.Clear
       
            'Indsæt værdi fra aktiv celle - den jeg peger på i ark inden kald af userform
            Sheet1.ComboBox1.Value = ActiveCell
       
            'tildel variablen r, rækkenummeret på sidste række indeholdende data
            r = ActiveSheet.Range("B65536").End(xlUp).Row
       
            'for hver celle i området B2 til sidste celle med data
            For Each c In Range("B2:B" & r)
       
                'hvis cellen ikke er tom
                If c.Value <> "" Then
           
                'tilføj celle værdi til listen
                Sheet1.ComboBox1.AddItem c.Value
                       
                End If
       
            Next c
           
    Else
   
        MsgBox "Den aktive celle er ikke i kolonne B", vbInformation
           
        'vælg celle B1 på det aktive ark
        ActiveSheet.Range("B1").Select
       
        'luk userform1
        UserForm1.Hide
       
    End If
       
End Sub



Slutteligt er jeg dog stadig i tvivl om linien:

'Indsæt værdi fra aktiv celle - den jeg peger på i ark inden kald af userform
Sheet1.ComboBox1.Value = ActiveCell

er nødvendig, da listen jo bliver fyldet lidt længere nede i procedruen ? ... men det ved kun du :o)


Med venlig hilsen, Nicolai
Avatar billede denero Juniormester
27. december 2011 - 21:11 #13
Hej Nicolai

Glædelig jul.

Det virker, men jeg rettede lige:

Sheet1.ComboBox1.Clear til
Me.ComboBox1.Clear
og
Sheet1.ComboBox1.Value = ActiveCell til
Me.ComboBox1.Value = ActiveCell   
og
Sheet1.ComboBox1.AddItem c.Value til
Me.ComboBox1.AddItem c.Value


Hvad er tanken med linien:
'Indsæt værdi fra aktiv celle - den jeg peger på i ark inden kald af userform
    ComboBox1.Value = ActiveCell

Dette bruger jeg, hvis man peger på en bestemt celle inden userform åbnes, så vil den allerede stå i comboboxen samtidig med, hvis man fortryder, kan man vælge en fra listen i comboboxen. Jeg tror, jeg har det, som jeg behøver, ligger du et svar og tusind tak for hjælpen.
Avatar billede Ialocin Novice
27. december 2011 - 22:37 #14
Hej denero

Glædelig jul :o)

Godt at høre, at det fungerer efter hensigten.
Og tak for info omkring linien, som jeg tvivlede på.

Hermed et svar fra mig.


Godt nytår,
Med venlig hilsen Nicolai
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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