ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Worksheet Functions (https://www.excelbanter.com/excel-worksheet-functions/)
-   -   Formula to activate macro (https://www.excelbanter.com/excel-worksheet-functions/41091-formula-activate-macro.html)

coal_miner

Formula to activate macro
 
Greetings. Is there a way you can activate a macro through a formula.
Example:
=if(A1=B1,(macro here),"")? Thanks in advance.

Gary's Student

Consider using a Worksheet Calculate Event macro (not Change Event) to
monitor the cell in question and call your macro when conditions are right.
--
Gary's Student


"coal_miner" wrote:

Greetings. Is there a way you can activate a macro through a formula.
Example:
=if(A1=B1,(macro here),"")? Thanks in advance.


John Michl

This should get you started.

You could attach some code to the Worksheet Change that checks to see
if the two cells are equal and if so run some code. This method will
check every time something is entered. I'm sure it needs to be
modified for you needs but should give you a starting point.

Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Sheets("Sheet1").Range("A1:B1")
If Sheets("Sheet1").Range("A1") = Sheets("Sheet1").Range("B1") Then
MsgBox "(put code here)"
End If
End Sub

- John


dominicb


Good afternoon Coal_miner

It is not possible for a cell to initiate a macro.

Once workaround would be an event procedure set up (in
Workbook_SheetChange) that monitors a cell and compares its value to
another cell and if true then a macro is called.

HTH

DominicB


--
dominicb
------------------------------------------------------------------------
dominicb's Profile: http://www.excelforum.com/member.php...o&userid=18932
View this thread: http://www.excelforum.com/showthread...hreadid=396822


Temp

A little more generic:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Worksheet.Range("A1") = Target.Worksheet.Range("B1") Then
MsgBox "Example"
'' or put a macro name here
End If
End Sub


MikeZ


Temp Wrote:
A little more generic:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Worksheet.Range("A1") = Target.Worksheet.Range("B1") Then
MsgBox "Example"
'' or put a macro name here
End If
End Sub


I found this thread by using search, thanks.

So I make the above a new macro and run it first every time I start the
xls file? or?


--
MikeZ
------------------------------------------------------------------------
MikeZ's Profile: http://www.excelforum.com/member.php...o&userid=27383
View this thread: http://www.excelforum.com/showthread...hreadid=447059



All times are GMT +1. The time now is 12:10 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com