• 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 alleen uitvoeren bij selecteren bepaalde cel

Status
Niet open voor verdere reacties.

Revolutionary

Gebruiker
Lid geworden
1 apr 2009
Berichten
183
Goedemorgen helpers,

Ik vroeg mij af of het mogelijk is om een macro alleen uit te voeren als een cel in een bepaalde kolom is geselecteerd (Kolom C)? Het maakt niet uit welke cel, zolang de cel zich maar bevindt in Kolom C. Hieronder vind je een voorbeeld van hoe de vba-code er nu uit ziet.

Code:
Sub Macro1_Executed()
Dim response As VbMsgBoxResult
response = MsgBox("Are you sure you want to move this order to sheet ""Executed""? This action can not be undone! Be sure that the cursor is placed on the right place in Column C!", vbYesNo)

If response = vbYes Then
   With ActiveCell
        ['Executed'!A65536].End(xlUp).Offset(1).Resize(, 23) = .Resize(, 23).Value
        .EntireRow.ClearContents
End With
MsgBox "The order has been copied to sheet ""Executed"".", vbOKOnly
End If
If response = vbNo Then
    End
End If
End Sub

Ik hoop dat iemand mij op weg kan helpen. Alvast bedankt!

Groeten,
Tim
 
Revolutionary,

Ik neem aan dat je code in een module staat.
Zet onderstaande code achter het blad en zodra je in kolom C op een cel klikt komt jouw macro in actie.
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 3 Then
 Macro1_Executed
End If
End Sub
 
Nee dat is eigenlijk niet wat ik zocht. Ik ben misschien niet helemaal duidelijk geweest in mijn eerste post. De macro wordt uitgevoerd door op een button te drukken. Zodra op de button wordt geklikt komt er eerst een messagebox met de vraag of men zeker weet dan men de macro moet worden uitgevoerd. Bij "ja" wordt de macro uitgevoerd, maar wat ik eigenlijk zou willen is dat voor deze waarschuwingsmessagebox er eerst gecontroleerd wordt of er een cel in kolom C is geselecteerd, zo niet dan moet er idealiter een messagebox komen met een tekst als "selecteer een cel in kolom c".

Ik hoop dat ik het nu iets duidelijker heb toegelicht, zo niet dan hoor ik het graag.

Tim
 
Revolutionary,

Probeer dit eens.
Code:
Sub Macro1_Executed()
Dim response As VbMsgBoxResult
MsgBox "zit u in Kolom C?", vbYesNo
If vbNo Then Exit Sub
response = MsgBox("Are you sure you want to move this order to sheet ""Executed""? This action can not be undone! Be sure that the cursor is placed on the right place in Column C!", vbYesNo)

If response = vbYes Then
   With ActiveCell
        ['Executed'!A65536].End(xlUp).Offset(1).Resize(, 23) = .Resize(, 23).Value
        .EntireRow.ClearContents
End With
MsgBox "The order has been copied to sheet ""Executed"".", vbOKOnly
End If
If response = vbNo Then
    End
End If
End Sub
 
Beste ExcelAmateur,

Dat is eigenlijk ook niet wat ik zoek. De macro zou uit zichzelf moeten constateren of een cel in kolom C is geselecteerd, zo ja dan verschijnt er een messagebox met de vraag of de macro uitgevoerd zou moeten worden, zo nee dan zou de macro niet uitgevoerd moeten worden en komt er een messagebox met het bericht waarop staat dat de macro alleen uitgevoerd kan worden als een cel in kolom C geselecteerd is.

Dus eigenlijk een soort van beveiliging die ervoor zorgt dat de macro alleen wordt uitgevoerd indien een cel in kolom C is geselecteerd.

Toch alvast bedankt voor de genomen moeite om mij te helpen:)

Tim
 
Nieuwe tekst,
mijn vorig bericht heb ik verwijderd omdat er een foutje in stond.

Probeer dit:
De macro zou uit zichzelf moeten constateren of een cel in kolom C is geselecteerd, zo ja dan verschijnt er een messagebox met de vraag of de macro uitgevoerd zou moeten worden, zo nee dan zou de macro niet uitgevoerd moeten worden en komt er een messagebox met het bericht waarop staat dat de macro alleen uitgevoerd kan worden als een cel in kolom C geselecteerd is. Dus eigenlijk een soort van beveiliging die ervoor zorgt dat de macro alleen wordt uitgevoerd indien een cel in kolom C is geselecteerd.
Probeer dit:
Code:
Sub Macro1_Executed()
Dim response As VbMsgBoxResult
If Selection.Column() <> 3 Then
MsgBox "Selecteer eerst een cel in kolom 3 en voer dan de macro opnieuw uit."
Exit sub
End If
response = MsgBox("Are you sure you want to move this order to sheet ""Executed""?" & Chr(13) & "This action can not be undone!" & Chr(13) & "Be sure that the cursor is placed on the right place in Column C!", vbYesNo)
If response = vbYes Then
With ActiveCell
['Executed'!A65536].End(xlUp).Offset(1).Resize(, 23) = .Resize(, 23).Value
.EntireRow.ClearContents
End With
MsgBox "The order has been copied to sheet ""Executed"".", vbOKOnly
End If
If response = vbNo Then
End
End If
End Sub
 
Beste Zapatr,

Heel erg bedankt:thumb:
Dit is precies wat ik zocht!:)

Ik zet deze topic op opgelost.

Groeten,
Tim
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan