Forfatter |
Emne Søg Emne funktioner
|
Blackbox
Forum Begynder
Medlem: 08.Jul.2016
Land: Danmark
Status: Offline
Point: 14
|
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.
|
|
|
|
|
zpjj
Sølv bruger
Medlem: 08.Maj.2013
Land: Danmark
Status: Offline
Point: 179
|
Sendt: 08.Jul.2016 kl. 13:41 |
Hej Prøv denne 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
|
|
Blackbox
Forum Begynder
Medlem: 08.Jul.2016
Land: Danmark
Status: Offline
Point: 14
|
Sendt: 11.Jul.2016 kl. 07:30 |
Hej Peter....
Jeg er desvære meget ny inde for makro´er, så skal lige have lidt mere hjælp .
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
|
|
zpjj
Sølv bruger
Medlem: 08.Maj.2013
Land: Danmark
Status: Offline
Point: 179
|
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
|
|
zpjj
Sølv bruger
Medlem: 08.Maj.2013
Land: Danmark
Status: Offline
Point: 179
|
Sendt: 11.Jul.2016 kl. 21:20 |
Hej Per Her er en lidt anden måde at gøre det på. Håber du kan bruge noget af det 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
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5470
|
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
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.
|
|
zpjj
Sølv bruger
Medlem: 08.Maj.2013
Land: Danmark
Status: Offline
Point: 179
|
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
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5470
|
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'. 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
|
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.
|
|
zpjj
Sølv bruger
Medlem: 08.Maj.2013
Land: Danmark
Status: Offline
Point: 179
|
Sendt: 12.Jul.2016 kl. 11:10 |
Jeg kan kun give dig ret Så det som en lille udfordring, " Maybe we can use it in another afsnit"
|
Med venlig hilsen Peter Juul
Jeg bruger EXCEL 2010
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5470
|
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.
|
|
zpjj
Sølv bruger
Medlem: 08.Maj.2013
Land: Danmark
Status: Offline
Point: 179
|
Sendt: 28.Jul.2016 kl. 14:31 |
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
|
|
Blackbox
Forum Begynder
Medlem: 08.Jul.2016
Land: Danmark
Status: Offline
Point: 14
|
Sendt: 29.Jul.2016 kl. 08:57 |
Hejsa....
Jeg kan bare ikke få det til at virke.... .
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
|
|
Blackbox
Forum Begynder
Medlem: 08.Jul.2016
Land: Danmark
Status: Offline
Point: 14
|
Sendt: 29.Jul.2016 kl. 08:58 |
Hejsa....
Jeg kan bare ikke få det til at virke.... .
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
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5470
|
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.
|
|
Blackbox
Forum Begynder
Medlem: 08.Jul.2016
Land: Danmark
Status: Offline
Point: 14
|
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.... .
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.
|
|
zpjj
Sølv bruger
Medlem: 08.Maj.2013
Land: Danmark
Status: Offline
Point: 179
|
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
|
|
Blackbox
Forum Begynder
Medlem: 08.Jul.2016
Land: Danmark
Status: Offline
Point: 14
|
Sendt: 31.Jul.2016 kl. 08:43 |
Hejsa...
Sender det gerne.... .
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.... . Mvh. den meget fortvivlet...
|
|
Blackbox
Forum Begynder
Medlem: 08.Jul.2016
Land: Danmark
Status: Offline
Point: 14
|
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
uploads/1734/BlackBox1_1.xlsm
|
|
zpjj
Sølv bruger
Medlem: 08.Maj.2013
Land: Danmark
Status: Offline
Point: 179
|
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 /uploads/856/BlackBox1_2.xlsm" rel="nofollow">uploads/856/BlackBox1_2.xlsm
|
Med venlig hilsen Peter Juul
Jeg bruger EXCEL 2010
|
|
Blackbox
Forum Begynder
Medlem: 08.Jul.2016
Land: Danmark
Status: Offline
Point: 14
|
Sendt: 02.Aug.2016 kl. 14:50 |
Hejsa...
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
|
|