• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

webquery die macro activeert

Status
Niet open voor verdere reacties.

hans1974

Gebruiker
Lid geworden
27 sep 2012
Berichten
98
hallo,
Ik heb in een sheet een webquery staan, telkens deze refreshed zou een event moeten geactiveerd worden.
Als er niets verandert in cel D7 moet er niets gebeuren maar als cel D7 wel verandert (vb andere naam) dan moet een macro geactiveerd worden.
Hieronder is mijn macro. is deze OK?
Bedankt

Code:
Private Sub Worksheet_calculate(ByVal target As Range)

 Dim rBereik2 As Range
 Set rBereik2 = Range("D7")
 
If Intersect(target, rBereik2) Is Nothing Then Exit Sub

  Sheets("grid data").Range("L21").Interior.ColorIndex = 3
  Sheets("outages sheet").Range("A1") = 1
Application.Speech.Speak (" new alarm ! ")


End Sub
 
Laatst bewerkt door een moderator:
Hans,

Een paar opmerkingen;

Worksheet_calculate wordt uitgevoerd nadat er een herberekening plaats gevonden heeft.
Ik denk dat je beter voor Worksheet_change kunt kiezen.
Verder heb je rBereik2 niet nodig als je intersect(target, Range("D7")) gebruikt.
Hou er ook rekening mee dat als je meerdere tabbladen in het bestand hebt staan Range("D7") meerdere keren voorkomt!
Gebruik liever Sheets("NaamSheet").Range("D7").

Veel Succes.
 
als ik hem test volgens uw suggesties, werkt de macro ook als er niets verandert is in cel D7,

Is er mss een andere mogelijkheid?
 
@ Elsendoorn
Aangezien een event-macro sheetgebonden is zal dit hier niet zoveel rol spelen.
Je hebt echter gelijk dat het een goede gewoonte is om steeds de bladnaam te gebruiken om verrassingen en foute resultaten te vermijden.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$D$7" Then
        Sheets("grid data").Range("L21").Interior.ColorIndex = 3
        Sheets("outages sheet").Range("A1") = 1
        Application.Speech.Speak (" new alarm ! ")
    End If
End Sub
 
Laatst bewerkt:
Bedankt voor de hulp Rudi!

Kan ik op onderstaande manier (verder gaand op uw macro) 2 cellen controleren. Dat als 1 van beide of de beide veranderen de macro geactiveerd word.

If Target.Address = "$D$7" Or Target.Address = "$D$6" Then
 
De wereld is aan de durvers, dus ik zou zeggen probeer het eens uit en bekijk het resultaat.:)
Ik denk niet dat er rook uit je PC gaat komen als je dit test.:D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan