Avatar billede Laugesen1 Mester
26. oktober 2013 - 00:18 Der er 21 kommentarer og
1 løsning

Excel 2007 - VBA - fejl ved RowSource

Jeg er lige startet med at lære VBA og er ved at læse bogen "Excel 2007 - programmering med VBA".

Der er et eksempel i bogen, hvor man skal oprette en brugerformular og tilhørende procedurer der sætter data ind i et ark.
Jeg  kan ikke få den første procedure til at fungere i min egen indtastning, men når jeg bruger det eksempel jeg har fra bogens hjemmeside, så virker den fint.
Jeg ved hvilken linje der i første omgang giver problemer, og kan se, at der er forskel på hvordan de to ark reagerer ved indtastning. Men jeg kan ikke finde ud af årsagen.

Der kommer en bebug ved følgen linje:
.RowSource = "Forbrug"

Forskellen ved mit egen ark og bogens, er, at hvis jeg i bogens ark sletter ".RowSource" og skal skrive linjen igen, så lige så snart jeg skriver " . "  - kommer der en lille boks frem med en masse valgmuligheder, hvor jeg så kan vælge ".RowSource".

Den lille boks kommer ikke frem i mit eget ark!

Er der nogen der har et bud på hvad der er galt?


Hele proceduren:

Private Sub UserForm_Activate()
With lstForbrugType
    .RowSource = "Forbrug"
    .ListIndex = 0
End With

txtDato.Text = Format(Now, "dd.mmm.yyyy")

With lstKortType
    RowSource = "Korttype"
    ListIndex = 0
End With
End Sub
Avatar billede store-morten Ekspert
26. oktober 2013 - 01:01 #1
Har du oprettet fanen med "Lister" og de to navngivet lister:
Forbrug
Korttype
Avatar billede Laugesen1 Mester
26. oktober 2013 - 01:08 #2
Ja, jeg har både omdøbt arket til "Lister" og navngivet celleområderne, Forbrug og Korttype.
Avatar billede store-morten Ekspert
26. oktober 2013 - 01:16 #3
Er Comboboxen "døbt" rigtigt?

lstForbrugType
Avatar billede Laugesen1 Mester
26. oktober 2013 - 01:32 #4
Ja, den skulle være døbt rigtigt:
lstForbrugType (starter med lille L)
Avatar billede store-morten Ekspert
26. oktober 2013 - 01:43 #5
Din kode virker i mit ark?
Avatar billede store-morten Ekspert
26. oktober 2013 - 01:43 #6
Send evt. på E-Mail
Avatar billede Laugesen1 Mester
26. oktober 2013 - 01:51 #7
Så det er nok en indstilling hos mig, der er er forkert.
Hvis jeg sætter koden ind i et nyt ark, så har jeg stadig problemet.

Og igen, hvis sletter fx. ".RowSource" og skal skrive linjen igen, så kommer den lille boks ikke frem, hvor jeg vælge fx. ".RowSource".
Avatar billede store-morten Ekspert
26. oktober 2013 - 02:02 #8
Kort version:
Private Sub UserForm_Activate()

lstForbrugType.RowSource = "Forbrug"
lstKortType.RowSource = "Korttype"
txtDato.Text = Format(Now, "dd.mmm.yyyy")

End Sub
Avatar billede Laugesen1 Mester
26. oktober 2013 - 22:45 #9
Jeg har fundet fejlen. Det var Comboboxen der ikke var "døbt" rigtigt. Så nu er jeg kommet lidt længere!

Jeg troede, at boxen havde det rigtige navn, men har forvekslet Combobox og Label med hinanden.

Det har også rettet fejlen, når jeg fx sletter ".RowSource" og skriver linjen igen,  - nu kommer den lille boks frem med det samme, når jeg har skrevet " . "  - og jeg kan så fx vælge ".RowSource".

Men nu er der kommet et andet problem, når jeg  kører brugerformularen!

I Comboboxen med forbrugstype, bliver der kun indsat værdi fra den første celle fra det navngivet område (Forbrug). Jeg har navngivet området (B2:B9) i arket "Lister", og området har omfang: Projektmappe.

Når jeg klikker på navnet (Forbrug) i arket, så bliver hele området markeret. Så umiddelbart virker det som om det er lavet rigtigt.

Har du et bud på hvad der forårsager det problem?
Avatar billede store-morten Ekspert
26. oktober 2013 - 23:10 #10
I Comboboxen med forbrugstype, bliver første valg mulighed indsat  som værdi fra den første celle fra det navngivet område (Forbrug).

Med koden: .ListIndex = 0

Kan du ikke ændre det ved at klikke på pilen?
Avatar billede Laugesen1 Mester
26. oktober 2013 - 23:24 #11
Nej, når jeg klikker på den lille pil, kommer der kun værdien fra første celle. Hele boxen bliver åbnet, men under første linje (værdien fra celle B2) er feltet tomt.
Avatar billede store-morten Ekspert
26. oktober 2013 - 23:25 #12
Virker KortType?
Avatar billede store-morten Ekspert
26. oktober 2013 - 23:32 #13
Når du klikke på pilen ved "Boksen Navn"

Har du så kun de 2 liste der:

Forbrug
Korttype
Avatar billede Laugesen1 Mester
26. oktober 2013 - 23:32 #14
Nej
Avatar billede Laugesen1 Mester
26. oktober 2013 - 23:44 #15
Ja, der er kun de 2 lister.

Forbrugstype:
Hele boxen bliver åbnet, men kun værdi fra celle B2 bliver indsat. Under første linje (værdien fra celle B2) er feltet tomt. Men masser af tom plads.

Korttype:
Boxen bliver åbnet, men der er kun én linje i boxen. Og den er tom.
Avatar billede store-morten Ekspert
27. oktober 2013 - 00:03 #16
Prøv med denne kode:

Private Sub UserForm_Activate()
With lstForbrugType
    .RowSource = "Lister!B2:B9"
    .ListIndex = 0
End With
Avatar billede Laugesen1 Mester
27. oktober 2013 - 00:11 #17
Desværre samme resultat
Avatar billede store-morten Ekspert
27. oktober 2013 - 00:13 #18
Hmm...
Avatar billede store-morten Ekspert
27. oktober 2013 - 00:20 #19
Så kan jeg ikke komme på andet, end at prøve, at lave en ny test liste i kollonne F
Og hente med den sidste kode rettet til.
Avatar billede Laugesen1 Mester
27. oktober 2013 - 00:31 #20
Jeg har prøvet at ændre korttype til "Lister!F2:F5".
Og jeg har prøvet at flytte værdierne fra B2:B9 til G2:G9, for at flytte dem væk fra det navngivet område.
Men desværre uden resultat.

Koden er som følger:

Private Sub UserForm_Activate()
With lstForbrugType
    .RowSource = "Lister!G2:G9"
    .ListIndex = 0
End With

txtDato.Text = Format(Now, "dd.mmm.yyyy")

With lstKorttype
    RowSource = "Lister!F2:F5"
    ListIndex = 0
End With

End Sub
Avatar billede store-morten Ekspert
27. oktober 2013 - 00:45 #21
Du er velkommen til at sende filen til mig på E-mail (adresse under profil)

Ellers er det svært at fejl søge :-)
Avatar billede store-morten Ekspert
27. oktober 2013 - 19:22 #22
Du mangler lidt ..

Private Sub UserForm_Activate()
With lstForbrugType
    .RowSource = "Forbrug"
    .ListIndex = 0
End With

txtDato.Text = Format(Now, "dd.mmm.yyyy")

With lstKortType
    .RowSource = "Korttype"  '<-- Punktum, indsat
    .ListIndex = 0
End With
End Sub
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