Avatar billede mwj0203 Nybegynder
05. august 2010 - 16:30 Der 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
Avatar billede Lene Fredborg Ekspert
06. august 2010 - 00:39 #1
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).
Avatar billede mwj0203 Nybegynder
06. august 2010 - 08:24 #2
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?
Avatar billede Lene Fredborg Ekspert
06. august 2010 - 10:23 #3
Det er vist blevet til et nyt spørgsmål ;-)

Vis din "simplere makro", så der er noget et forholde sig til. Hvad mener du med "hente den pågældende makro der hører til værdien"?.
Avatar billede mwj0203 Nybegynder
06. august 2010 - 10:56 #4
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.
Avatar billede mwj0203 Nybegynder
06. august 2010 - 11:42 #5
Nu fik jeg det til at virke således:

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

Hvis du sender et svar får du pointene.
Avatar billede Lene Fredborg Ekspert
06. august 2010 - 11:44 #6
Det var godt, at det lykkedes.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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