05. august 2010 - 16:30Der er
5 kommentarer og 1 løsning
VBA - Problem med kørsel af makro ved ændring af celleværdi
Hej
Jeg har et problem med nedenstående makroer, de to første makroer kører fint når jeg kører dem enkeltvis, men når jeg skal køre dem vha. en ændring i en celle (nederste makro) får jeg fejl meddelelser, og somme tider går excel ned.
Nogen der kan se hvor jeg fejler? (RealA og Pct er foruddefinerede funktioner)
Sub Percentage() Range("e10", "e100") = "" Range("d10", "d100").Select Selection = Pct End Sub
Sub RealAmount() Range("d10", "d100") = "" Range("e10", "e100").Select Selection = RealA End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Range("b2") = "1" Then Call Percentage Else Call RealAmount End If End Sub
Du får lavet en endeløs løkke: Worksheet_Change kalder en makro, som ændrer dokumentet, som dermed aktiverer Worksheet_Change osv.
Hvis du f.eks. i starten af Worksheet_Change indsætter en linje: MsgBox " Worksheet_Change kører" og ændrer i en celle, vil du se, at meddelelsen bliver vist igen og igen (du kan stoppe med Ctrl+Break).
Ok, men hvordan kan det være at der så ikke er nogen problemer hvis man kører en simplere makro, som fx bare ændre en værdi i en celle med Worksheet_Change, og måske endnu vigtigere, hvad gør man så hvis man ved ændring af værdi i én celle vil hente den pågældende makro der hører til værdien?
Du har ret, det kan godt være at det grundlæggende spørgsmål er, at jeg skal have noget til at ske ved en ændring af værdien i en enkelt celle. Jeg har prøvet target.range men synes ikke at det virker. Makroen er som sådan underordnet, jeg tror at jeg helt tilbage til at skulle finde ud af hvordan man ved en ændring i en celle, får en makro til at køre. Altså skal den ene eller den anden makro køre hver gang værdien i den pågældende celle ændres.
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("D7")) Is Nothing Then If Range("d7") = "%" Then Call Percentage Else Call RealAmount End If End If End Sub
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.