• 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.

Macro continu laten lopen

Status
Niet open voor verdere reacties.
Hoe doe ik dat ?
Als B1 1 is dan trigger dan zet ik hem weer 0.

If B1 is 1 then call test.

??
 
Ja, bijvoorbeeld.
 
Maar dan loopt 'ie dus 1x bij het openen van het document als A2 en A3 gelijk zijn.
 
Nee, uiteraard niet.
De Workbook_Open wordt maar 1x uitgevoerd.
 
Sorry, maar ik begrijp de hele situatie niet meer en kan er verder niks nuttigs over zeggen zonder te weten wat dat externe programma is en wat deze exact doet.
Als deze iets in A1 neerzet en de Worksheet_Change wordt daardoor niet getriggert dan doet 'ie echt iets niet zoals het hoort.
 
Ik zou willen dat je het zelf zag.
Morgen weet ik meer.
Leuk zo'n klein klusje wat je wel even doet in een kwartiertje. :evil:
 
Nooit zeggen van: "Dat doe ik wel even..."
Want dat gaat altijd mis ;)
 
Ik ben bang dat het enige event dat je kunt gebruiken het Worksheet_Calculate event is. Om dat te laten werken moet je een formule laten wijzen naar die DDE cel. Helaas heb je dan ook nog een truuk nodig die je vertelt OF die cel wel degene is die de calculatie heeft veroorzaakt.
In de werkblad module:

Code:
Option Explicit

Private Sub Worksheet_Calculate()
    If poRngTriggeredCalculate Is Nothing Then Exit Sub
    MsgBox poRngTriggeredCalculate.Address & " heeft de calculatie gestart"
    Set poRngTriggeredCalculate = Nothing
End Sub
in een module:
Code:
Option Explicit

Public poRngTriggeredCalculate As Range

Public Function DetectCalc(r As Range)
    Set poRngTriggeredCalculate = r
    DetectCalc = r.Value2
End Function
Ergens in je werkblad in een lege cel:
Code:
=DetectCalc(A1)
 
Dan zou dit moeten werken ?
Ik heb (MsgBox poRngTriggeredCalculate.Address & " heeft de calculatie gestart") veranderd door (call test)
 

Bijlagen

@Allen: Een DDE server kan gegevens in een Excel bestand plaatsen. Dergelijke connecties veroorzaken helaas geen change event in Excel. Het enige event dat soelaas biedt is een calculate event zoals ik in #73 laat zien.
 
Ik vermoed dat je test alleen moet aanroepen als Excel opent (Test initialiseert de DDE verbinding, dat hoeft maar 1 keer). Daarna zou het calculate event ervoor moeten gaan zorgen dat de laatst gewijzigde waarde in de DDE cel opgeslagen wordt. Daarvoor moet nog een macrootje geschreven worden, iets in de trant van:

Code:
Sub CopyDDE()
    Application.EnableEvents = False
    Worksheets("Blad1").Range("A1").Copy
    With Worksheets("Blad2")
        with .Range("A" & .rows.count).End(xlUp)
            .Offset(1).PasteSPecial xlValuesANdNumberFormats
            .Offset(1,1).Value = Now()
        End With
    End With
    Application.EnableEvents = true
End Sub
Deze sub roep je dan aan vanuit het Calc event.
 
Ik ga het simpeler doen.
Als E1 1 wordt moet de macro uitgevoerd worden.
Deze maak ik met de dde server weer 0.
Hoe doe ik dat ?
Dus elke keer als E1 1 wordt moet de macro 1 keer lopen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan