Avatar billede Sandra1234 Mester
03. juli 2019 - 10:48 Der er 9 kommentarer og
1 løsning

Køre makro når en værdi vælges i kombinationsboks

Hejsa

Jeg sidder lige og leger med makroer.

Jeg har lavet en kombinationsboks, hvor man kan vælge nogle forskellige værdier. Der skal være en makro tilknyttet hvert valg i rullelisten, og det er her den driller. Det har kun lykkes mig at en makro køres, når der laves en ændring i rulleteksten.

Er der nogen, der kan hjælpe mig?

Mvh Sandra
Avatar billede store-morten Ekspert
03. juli 2019 - 11:37 #1
Vis den kode du er kommet frem til.

Måske der skal en "hvis" sætninger til.
Avatar billede Sandra1234 Mester
03. juli 2019 - 13:15 #2
Jeg valgte "Puder" i rullelisten og gik ind på Arket "Puder | Afdelingsoversigt", da jeg lavede makroen:

Sub Makro1()
'
' Makro1 Makro
'

'
    Sheets("Puder | Afdelingsoversigt").Select
End Sub

Den går nu altid ind på dette ark, uanset hvad jeg vælger i rullelisten. Men hvis jeg fx vælger "Klip" skal den gå ind på "Klip | Afdelingsoversigt".
Avatar billede store-morten Ekspert
03. juli 2019 - 13:44 #3
Hvis du har dit rulleliste valg i A1 på Ark1

Prøv:

Sub Makro1()
Fane = Worksheets("Ark1").Range("A1")
    Sheets(Fane & " | Afdelingsoversigt").Select
End Sub
Avatar billede Sandra1234 Mester
03. juli 2019 - 14:45 #4
Jeg har prøvet koden i mit ark og omdøbt Ark1 og A1 til "mine" værdier og har forsøgt i et ark jeg har kaldt Ark1 i celle A1, men den vil ikke....

Den kommer med advarselsboksen "Subscript out of range" og markerer den nederste linje, når jeg vil se hvor der skal debugges.

Har du nogen idé?
Avatar billede store-morten Ekspert
03. juli 2019 - 14:49 #5
Fane = Worksheets("Ark1").Range("A1")

Skal så tilrettes :-)
Avatar billede store-morten Ekspert
03. juli 2019 - 14:51 #6
Hvordan er din liste oprettet?

Datavalidering
Kontrolelement eller
ActiveX-objekt
Avatar billede store-morten Ekspert
03. juli 2019 - 15:14 #7
Datavalidering:
Private Sub Worksheet_Change(ByVal Target As Range)
    Sheets(Range("D1") & " | Afdelingsoversigt").Select
End Sub

ActiveX-objekt:
Private Sub ComboBox1_Change()
    Sheets(ComboBox1 & " | Afdelingsoversigt").Select
End Sub


Eksempel:
https://www.dropbox.com/s/amh5nbfzv5d4f47/kombinationsboks.xlsm?dl=0
Avatar billede Sandra1234 Mester
04. juli 2019 - 08:34 #8
Jeg har lavet det som kontrolelement, men efter at have taget et kig på dit dokument i dropbox, kom jeg frem til at ActiveX var lidt smartere :)

Det er så godt, nu virker det bare! Mange, mange tusind tak!
Avatar billede store-morten Ekspert
04. juli 2019 - 08:58 #9
Velbekomme.

Jeg fandt lige en fejl i Datavalidering, så har tilføjet lidt kode:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("D1")) Is Nothing Then
        Sheets(Range("D1") & " | Afdelingsoversigt").Select
    End If
End Sub

Så den ikke skifter side hver gang der ændres i arket, men kun hvis D1 (Rullelisten) ændres.
Avatar billede store-morten Ekspert
04. juli 2019 - 09:33 #10
Har prøvet at lave et eksempel på Kontrolelement.
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

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