Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketAuto aktivering af makro ved en bestemt celleværdi

 Besvar Besvar Side  12>
Forfatter
Blackbox Se dropdown
Forum Begynder
Forum Begynder


Medlem: 08.Jul.2016
Land: Danmark
Status: Offline
Point: 14
Direkte link til dette indlæg Emne: Auto aktivering af makro ved en bestemt celleværdi
    Sendt: 08.Jul.2016 kl. 08:40
Hejsa...

Håber at i kan hjælpe mig.

Hvor kan man få en makro til at aktiver hvis en celleværdi evt er 1 og ikke hvis den er 0 ?

På forhånd tak.
Til top



Til top
zpjj Se dropdown
Sølv bruger
Sølv bruger
Avatar

Medlem: 08.Maj.2013
Land: Danmark
Status: Offline
Point: 179
Direkte link til dette indlæg Sendt: 08.Jul.2016 kl. 13:41
Hej
 
Prøv denne Smile
 
Private Sub Worksheet_Change(ByVal Target As Range)
If Sheets("Sheet1").Range("A1") = 1 Then
    Call macro
End If
End Sub
 
Sub macro()
MsgBox "A1 er lig med 1"
End Sub
Med venlig hilsen
Peter Juul

Jeg bruger EXCEL 2010
Til top
Blackbox Se dropdown
Forum Begynder
Forum Begynder


Medlem: 08.Jul.2016
Land: Danmark
Status: Offline
Point: 14
Direkte link til dette indlæg Sendt: 11.Jul.2016 kl. 07:30
Hej Peter.... Smile

Jeg er desvære meget ny inde for makro´er, så skal lige have lidt mere hjælp Smile.

Når du skriver "Call macro", hvilken makro referer den så til ?
Det jeg skal bruge er at hvis celle A1 = 1, skal den selv aktiver makro1, hvis celle A1 =2, skal den aktiver makro2, osv frem til makro21

Håber du kan hjælpe mig, på forhånd tak.

/Per Smile


Til top
zpjj Se dropdown
Sølv bruger
Sølv bruger
Avatar

Medlem: 08.Maj.2013
Land: Danmark
Status: Offline
Point: 179
Direkte link til dette indlæg Sendt: 11.Jul.2016 kl. 08:22
Hej Per
 
Det kan laves lidt mere simpelt, men nedenstående giver lidt mere forståelse for hvad der sker.
Sæt det ind i F.eks. Sheet1
Håber du kan bruge det og giver mening :-)
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Range("A1").Value
 
          Case 1
              Call macro1 'Kalder macro1
 
          Case 2
              Call macro2 'Kalder macro2
 
          Case 3
              Call macro3 'Kalder macro3
 
          Case 4
              Call macro4 'Kalder OSV......
 
          Case 5
              Call macro5
 
          Case 6
              Call macro6
 
          Case 7
              Call macro7
 
          Case 8
              Call macro8
 
          Case 9
              Call macro9
             
          Case 10
              Call macro10
 
          Case 11
              Call macro11
 
          Case 12
              Call macro12
 
          Case 13
              Call macro13
 
          Case 14
              Call macro14
 
          Case 15
              Call macro15
 
          Case 16
              Call macro16
 
          Case 17
              Call macro17
 
          Case 18
              Call macro18
 
          Case 19
              Call macro19
          
          Case 20
              Call macro20
 
          Case 21
              Call macro21

          Case Else
              Exit Sub
    End Select

End Sub
 
Sub macro1()
MsgBox "A1 er lig med 1" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro2()
MsgBox "A1 er lig med 2" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro3()
MsgBox "A1 er lig med 3" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro4()
MsgBox "A1 er lig med 4" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro5()
MsgBox "A1 er lig med 5" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro6()
MsgBox "A1 er lig med 6" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro7()
MsgBox "A1 er lig med 7" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro8()
MsgBox "A1 er lig med 8" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro9()
MsgBox "A1 er lig med 9" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro10()
MsgBox "A1 er lig med 10" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro11()
MsgBox "A1 er lig med 11" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro12()
MsgBox "A1 er lig med 12" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro13()
MsgBox "A1 er lig med 13" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro14()
MsgBox "A1 er lig med 14" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro15()
MsgBox "A1 er lig med 15" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro16()
MsgBox "A1 er lig med 16" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro17()
MsgBox "A1 er lig med 17" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro18()
MsgBox "A1 er lig med 18" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro19()
MsgBox "A1 er lig med 19" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro20()
MsgBox "A1 er lig med 20" 'Udskift dette med den macro du vil køre.
End Sub
 
Sub macro21()
MsgBox "A1 er lig med 21" 'Udskift dette med den macro du vil køre.
End Sub
 
Med venlig hilsen
Peter Juul

Jeg bruger EXCEL 2010
Til top
zpjj Se dropdown
Sølv bruger
Sølv bruger
Avatar

Medlem: 08.Maj.2013
Land: Danmark
Status: Offline
Point: 179
Direkte link til dette indlæg Sendt: 11.Jul.2016 kl. 21:20
Hej Per
 
Her er en lidt anden måde at gøre det på. Smile
Håber du kan bruge noget af det Smile
 
Følgende ligges i Sheet1:
 
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim y As Variant
  Dim x As Integer
  Dim macro As String
 
    y = ActiveSheet.Range("A1").Value   'Henter værdi fra A1 som Variant
   
    If Not IsNumeric(y) Then                  'Checker om værdien er et tal
        Exit Sub                                      'Hvis værdien ikke er et tal, gå til slut sub
    End If
   
    x = ActiveSheet.Range("A1").Value   'Henter værdi fra A1 som Integer
    If x < 1 Or x > 21 Then                    'Checker om værdien ligger mellem 1 og 21
        Exit Sub                                       'Hvis værdien ikke ligger mellem 1 og 21, gå til slut sub
    End If
 
    macro = "macro" & x                      'Navngiver macro med det nummer der er valgt F.eks. macro15
    Application.Run (macro)                  'Kører macro15 som ligger i Modul1
End Sub
 
De næste ligges i Modul1:

Sub macro1()
MsgBox "A1 er lig med 1" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro2()
MsgBox "A1 er lig med 2" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro3()
MsgBox "A1 er lig med 3" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro4()
MsgBox "A1 er lig med 4" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro5()
MsgBox "A1 er lig med 5" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro6()
MsgBox "A1 er lig med 6" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro7()
MsgBox "A1 er lig med 7" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro8()
MsgBox "A1 er lig med 8" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro9()
MsgBox "A1 er lig med 9" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro10()
MsgBox "A1 er lig med 10" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro11()
MsgBox "A1 er lig med 11" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro12()
MsgBox "A1 er lig med 12" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro13()
MsgBox "A1 er lig med 13" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro14()
MsgBox "A1 er lig med 14" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro15()
MsgBox "A1 er lig med 15" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro16()
MsgBox "A1 er lig med 16" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro17()
MsgBox "A1 er lig med 17" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro18()
MsgBox "A1 er lig med 18" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro19()
MsgBox "A1 er lig med 19" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro20()
MsgBox "A1 er lig med 20" 'Udskift dette med den macro du vil køre.
End Sub

Sub macro21()
MsgBox "A1 er lig med 21" 'Udskift dette med den macro du vil køre.
End Sub

 

 
 
Med venlig hilsen
Peter Juul

Jeg bruger EXCEL 2010
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
Direkte link til dette indlæg Sendt: 12.Jul.2016 kl. 09:51
Hvis det er nummeret i cellen, der angiver, hvilken makro, der skal køres, må jeg så ikke foreslå en lidt mere simpel Event Smile
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.Run "Macro_" & Range("A1").Value
End Sub
...og, så benytte 'Datavalidering' i selve regnearket til at sørge for, at værdien i A1 ikke går ud over de mulige afgræsninger.


Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
zpjj Se dropdown
Sølv bruger
Sølv bruger
Avatar

Medlem: 08.Maj.2013
Land: Danmark
Status: Offline
Point: 179
Direkte link til dette indlæg Sendt: 12.Jul.2016 kl. 10:10
Hej EXELGAARD
 
Det har du helt ret i, man lærer hele tiden noget nyt herinde.
Det er derfor at dette forum er så kanon godt :-)
Med det første forslag, ville jeg bare gøre det meget simpelt, så han kunne se hvad der sker.
Med venlig hilsen
Peter Juul

Jeg bruger EXCEL 2010
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
Direkte link til dette indlæg Sendt: 12.Jul.2016 kl. 10:47
Jo,jo, Zpjj,

Du havde jo hele grund ideen rigtigt, med at benytte 'Application.Run' i stedet for 'Call'. Thumbs Up

Og, alle skal da vide, at jeg er stor tilhænger af VBA, men når man nu lettere, hurtigere og mere sikkert, kan lave det i selve regnearket, så er man da et skarn, hvis man ikke gør det Smile
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
zpjj Se dropdown
Sølv bruger
Sølv bruger
Avatar

Medlem: 08.Maj.2013
Land: Danmark
Status: Offline
Point: 179
Direkte link til dette indlæg Sendt: 12.Jul.2016 kl. 11:10
Jeg kan kun give dig ret Smile
Så det som en lille udfordring, "Maybe we can use it in another afsnit" Big smile
Med venlig hilsen
Peter Juul

Jeg bruger EXCEL 2010
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
Direkte link til dette indlæg Sendt: 28.Jul.2016 kl. 13:56
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
zpjj Se dropdown
Sølv bruger
Sølv bruger
Avatar

Medlem: 08.Maj.2013
Land: Danmark
Status: Offline
Point: 179
Direkte link til dette indlæg Sendt: 28.Jul.2016 kl. 14:31
Wink Her er lige en upload på tideligere kode.
/uploads/856/BlackBox1.xlsm" rel="nofollow">uploads/856/BlackBox1.xlsm
Med venlig hilsen
Peter Juul

Jeg bruger EXCEL 2010
Til top
Blackbox Se dropdown
Forum Begynder
Forum Begynder


Medlem: 08.Jul.2016
Land: Danmark
Status: Offline
Point: 14
Direkte link til dette indlæg Sendt: 29.Jul.2016 kl. 08:57
Hejsa....

Jeg kan bare ikke få det til at virke.... CryCryCry.

Når jeg i macro skriver den macro den skal trække så udføre den godt nok opgaven, men melder også fejl i "Application.Run "macro"

Jeg forstår det bare ikke... eller måske indsætter jeg den macro son den skal trække forkert... HJÆLP.

Mvh.

Per
Til top
Blackbox Se dropdown
Forum Begynder
Forum Begynder


Medlem: 08.Jul.2016
Land: Danmark
Status: Offline
Point: 14
Direkte link til dette indlæg Sendt: 29.Jul.2016 kl. 08:58
Hejsa....

Jeg kan bare ikke få det til at virke.... CryCryCry.

Når jeg i macro skriver den macro den skal trække så udføre den godt nok opgaven, men melder også fejl i "Application.Run "macro"

Jeg forstår det bare ikke... eller måske indsætter jeg den macro son den skal trække forkert... HJÆLP.

Mvh.

Per
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
Direkte link til dette indlæg Sendt: 29.Jul.2016 kl. 09:00
Hva' skriver du helt præcist?

Jeg tror, du har misforstået, hvad der skal skrives i Application.Run...

Det eksempel, jeg har uploadet virker, så, hvad ændrer du???
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
Blackbox Se dropdown
Forum Begynder
Forum Begynder


Medlem: 08.Jul.2016
Land: Danmark
Status: Offline
Point: 14
Direkte link til dette indlæg Sendt: 29.Jul.2016 kl. 12:40
Hejsa...

Ja, det ark du har sendt virker fint.... men når jeg vil have den til at virke med de macro´er jeg har lavet, så kan jeg desværre ikke få det til at virke.... CryCryCry.

Jeg har 21 macro´er som i princippet gør det samme, altså kopier nogle celler. Men de celler som der skal kopieres er forskellige fra hvilke værdi der står i A1. 

Det skal forstås således at, hvis A1 = 1 skal den trække macro1 (som kopier nogle celler over i et andet ark). Hvis A1 = 2 skal den trække macro2 (som kopier nogle andre celler over i et andet ark). Det samme igen hvis A1 =3 osv..... helt frem til 21.

Jeg har højest snarsynlig misforstået noget da macro ikke er min stærke side, men dammmm hvor ville jeg gerne lære at bruge det SmileTongueEmbarrassed 
Til top
zpjj Se dropdown
Sølv bruger
Sølv bruger
Avatar

Medlem: 08.Maj.2013
Land: Danmark
Status: Offline
Point: 179
Direkte link til dette indlæg Sendt: 29.Jul.2016 kl. 15:00
Hej BlackBox
Jeg tror du skal vedhæfte dit ark, så vi har noget at arbejde med :-)
 
Med venlig hilsen
Peter Juul

Jeg bruger EXCEL 2010
Til top
Blackbox Se dropdown
Forum Begynder
Forum Begynder


Medlem: 08.Jul.2016
Land: Danmark
Status: Offline
Point: 14
Direkte link til dette indlæg Sendt: 31.Jul.2016 kl. 08:43
Hejsa...

 

Sender det gerne.... Smile.

 

Det du har sendt virker super, men hvordan får jeg den til at trække en macro frem for at der kommer en tekstbox frem ?. Hvis jeg fjerner den linie i macro1 hvor der står (MsgBox "A1 er lig med 1" 'Udskift dette med den macro du vil køre.) og i stedet for tilføjer

Range("D1").Select

    Selection.Copy

    Range("J1").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    Application.CutCopyMode = False

    ActiveWorkbook.Save

    Range("A1").Select

 

Så kopier den godt nok celle D1 til J1 men den køre i loop og efter kort tid kommer der denne fejl  

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

  Dim y As Variant

  Dim x As Integer

  Dim macro As String

      y = ActiveSheet.Range("A1").Value   'Henter værdi fra A1 som Variant

        If Not IsNumeric(y) Then                  'Checker om værdien er et tal

        Exit Sub                                      'Hvis værdien ikke er et tal, gå til slut sub

    End If

    x = ActiveSheet.Range("A1").Value   'Henter værdi fra A1 som Integer

    If x < 1 Or x > 21 Then                    'Checker om værdien ligger mellem 1 og 21

        Exit Sub                                       'Hvis værdien ikke ligger mellem 1 og 21, gå til slut sub

    End If

    macro = "macro" & x                      'Navngiver macro med det nummer der er valgt F.eks. macro15

    Application.Run (macro)                  'Kører macro15 som ligger i Modul1= (Denne linje bliver gul)

 

End Sub


Håber dette giver lidt mening.... WinkWinkWink.

Mvh. den meget fortvivlet...



Til top
Blackbox Se dropdown
Forum Begynder
Forum Begynder


Medlem: 08.Jul.2016
Land: Danmark
Status: Offline
Point: 14
Direkte link til dette indlæg Sendt: 31.Jul.2016 kl. 13:20
Hejsa igen.

Her er den fil du var så venlig at sende mig. Hvis der skrives 1, 2 eller  3 i "A1" træker den godt nok de macro´er som er tilknyttet dertil, men den går i fejl, kan du evt se hvorfor ?

Mvh.

Per

SmileSmileSmileSmileSmileSmileSmileSmileSmileSmile


uploads/1734/BlackBox1_1.xlsm
Til top
zpjj Se dropdown
Sølv bruger
Sølv bruger
Avatar

Medlem: 08.Maj.2013
Land: Danmark
Status: Offline
Point: 179
Direkte link til dette indlæg Sendt: 31.Jul.2016 kl. 16:52
Hej BlackBox
 
Den kigger på ændringer i hele arket og derfor vil den blive ved med at køre.
 
Jeg har lagt en begrænsning ind, så den kun reagerer på ændring i celle A1.
 
Prøv at se om det virker Smile
 
/uploads/856/BlackBox1_2.xlsm" rel="nofollow">uploads/856/BlackBox1_2.xlsm
Med venlig hilsen
Peter Juul

Jeg bruger EXCEL 2010
Til top
Blackbox Se dropdown
Forum Begynder
Forum Begynder


Medlem: 08.Jul.2016
Land: Danmark
Status: Offline
Point: 14
Direkte link til dette indlæg Sendt: 02.Aug.2016 kl. 14:50
Hejsa... TongueTongueTongueTongueTongueTongueTongueTongueTongueTongueTongueTongueTongueTongue

Det virker bare super.... Taaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaak.

Nu mangler jeg blot det sidste og så virker mit excelark som det skal, så håber også du kan hjælpe mig der ligeså.

Det er således at cellen "A1" er reelt set en beregnings celle, hvor den henter en værdi i "A10" og hvis værdien i "A1" mellem 1 og 3, så skulle den gerne selv aktiver den macro som værdien i "A1" referer til.

Håber virkelige du kan hjælpe mig.


/Per Smile
Til top
 Besvar Besvar Side  12>

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk