• 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 iets uit laten voeren door verandering cell

Status
Niet open voor verdere reacties.

kobustimmer

Gebruiker
Lid geworden
16 dec 2013
Berichten
9
Hallo.

Als ik in een lege cel een 1 neer zet en daarna enter geef wil ik graag dat een macro wordt aangestuurd zodat deze iets uitvoert.

wie weet wat ik verkeerd doe en kan mij daar mee helpen.

Dit heb ik in ThisWorkbook staan
Code:
Private Sub Worksheet_Calculate()
If Range("A8").Value = "1" Then Maakfile
End Sub
dit heb ik als macro in een module staan.
Code:
Sub MaakFile()
    Dim SrceFile As String
    Dim DestFile As String
    SrceFile = Range("A15").Value
    DestFile = Range("D15").Value
    FileCopy SrceFile, DestFile
End Sub
 
Vervang dit:

Code:
Private Sub Worksheet_Calculate()
If Range("A8").Value = "1" Then Maakfile
End Sub

door dit:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A8").Value = "1" Then Maakfile
End Sub

Maar je moet dan wel nog het bereik afbakenen anders loopt die macro bij elke wijziging in je hele blad.
 
@Cobbe

De macro loop sowieso bij iedere wijziging, zelfs als de gebeurtenis geen VBAcode bevat. Dat valt niet te beperken.
 
Hallo Cobbe.

dank voor de snelle reactie.

heb het vervangen maar werkt nog niet.

ik zal uitleggen wat ik aan het doen ben.
ik wil excel een jpg file laten copieren met een interval van van een paar uur.
heb met vba een lus gemaakt ( een lopende klok als het ware )
bij een bepaalde verstreken tijd gaat een cel van niets op 1 en weer terug op niets ( voorwaarde uit berekening )
maar dan komt het probleem.
macro werkt gewoon goed op hand.
nu probeer ik het zo te maken dat als de cel 1 als waarde heeft hij automatisch de macro aanstuurt.
hier loop ik vast.
Groet Kobus.
 
@snb
De macro loop sowieso bij iedere wijziging
Natuurlijk is dat zo en dus moet je daar rekening mee houden in je code.
Change_Event wordt wel getriggerd maar de rest van de code kun je best doen stoppen als de wijziging niet gebeurt in je voorziene bereik.
in dit geval was dat natuurlijk niet nodig.

Of zit ik weer mis? :)
 
Gebruik dan toch maar je calculation_Event en gebruik de waarde van A8 in een verborgen cel staande formule die bv =A8*6 bevat.
Deze cel kan je verbergen en nu wordt na elke wijziging van A8 die som herberekend en triggert hij die Caculation.

Test hem zo eens.
 
Hallo.
Cobbe & snb

heb ik gedaan maar gebeurt niets.
cel A8 komt nu keurig 6 te staan na berekening als de tijd overeen komt met ingestelde tijd.
waarna hij weer herberekent en naar 0 gaat.
maar verder gebeurt er niets.
Groet Kobus.
 
Lees nog eens aandachtig #6 daar staat toch niet dat die som-formule in A8 moet komen of wel.
 
Wordt de waarde van A8 afgerond?
Zet geen formule van 6 * A8 in een andere cel. Dat werkt alleen maar verwarrend.

Met vriendelijke groet,


Roncancio
 
Hallo.
@Roncancio
het getal wordt niet afgerond, het is gewoon een yes of no getal ( 1 of 0 )

er staat in cel A8 =ALS(D24=F24;"1";"0") hierbij is D24 de ingestelde tijd en F24 de (nu) tijd. dit werkt goed.

@Cobbe
lees het keer op keer over maar ik zie het niet, begrijp niet wat jij bedoelt.
Groet Kobus.
 
Kijk maar eens in het bestand of dat misschien toch werkt.
 

Bijlagen

Hallo Cobbe.

Het werkt nu goed.

Code:
Private Sub Worksheet_Calculate()
    If [A8] * 1 = 0 Then GoTo Quit:
    Dim SrceFile As String
    Dim DestFile As String
    SrceFile = Range("A15").Value
    DestFile = Range("D15").Value
    On Error GoTo Quit:
    FileCopy SrceFile, DestFile
Quit:
End Sub
Het maakt niet uit hoe de 1 of 0 tot stand komt in cel A8.
Het werkt gewoon.

Dank jullie voor alle hulp, ben er blij van geworden.
Groet Kobus.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan