Capture Cell Value on left mouse single click in Excel VBA

excel vba cell click event
excel vba right click event
excel vba - double click cell run macro
excel vba run macro when any cell is selected
vba onclick
vba before left click
excel vba mouse events
excel vba get selected cell value

I need help in capturing the cell value on left mouse click. So when a user has done a single left mouse click in a particular cell then I need to capture that particular cell value (Value written in that cell) in the VBA code.

This value will then be passed on to the VBA code and the output will be different for click in different cells. I hope I was able to explain the purpose.

I have total of 10 cells where the left mouse click value is to be captured.

This code will check to see if multiple cells are selected at once then it checks to see if the cell is empty. If it is empty then it exits otherwise it stores the value is cell N1. You can change which cell the value gets stores at. If N1 has a value it goes to the next empty cell in column N.

Dim oval
Dim N As Long
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count < 2 Then
    If Target = Empty Then
      Exit Sub
    End If
oval = Target.Value
MsgBox "The value saved is " + oval + "."
If Range("N1").Value = "" Then
    N = 1
Else
    N = Cells(Rows.Count, "N").End(xlUp).Row + 1
End If
Cells(N, "N").Value = oval
End If
End Sub

Retrieve row number of clicked cell in Excel, Open up the VBA editor (Alt-F11). Now as you click/move around to different cells it will popup a dialog box telling you the current cell's row. You could assign the results to a variable instead of using a MsgBox if you need to use the value someplace else. At the bottom right of that selected cell, there's this small square. Supriyo asked if there is a mouse event handler in VBA. He wants a value inserted in a cell when that cell is clicked on. The standard way to do this is with the SelectionChange event.

If you would settle for a double mouse click, you could try something like

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    MsgBox Target.Value
    Cancel = True
End Sub

Trigger macro with ONE click on specific cell, The following code will fire when cell D4 is clicked in the worksheet. Right-click the sheet tab and select "View Code". Paste this into the code window: To finish this task in Excel, the following VBA code may help you, please do as follows: 1.Right click the sheet tab that you want to change cell value by clicking on, and choose View Code from the context menu, and in the opened Microsoft Visual Basic for Applications window, copy and paste the following code into the blank Module:

How about this? Just wrote it, it will not register a mouse click if you click where you could have reached with the keyboard

Enter Under Worksheet Code:

XXXXXXX
Option Explicit
Private prevTarget As Range
Private Sub Worksheet_Activate()
Set prevTarget = Selection
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim wasMouseClick As Boolean
    Dim ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9 As String
    On Error Resume Next
    ch1 = prevTarget.Offset(1, 0).Address
    ch2 = prevTarget.Offset(-1, 0).Address
    ch3 = prevTarget.Offset(0, 1).Address
    ch4 = prevTarget.Offset(0, -1).Address
    ch5 = prevTarget.End(xlDown).Address
    ch6 = prevTarget.End(xlToLeft).Address
    ch7 = prevTarget.End(xlToRight).Address
    ch8 = prevTarget.End(xlUp).Address
    On Error GoTo error_noPreTarget

    If Not (Target.Address = ch1 Or _
       Target.Address = ch2 Or _
       Target.Address = ch3 Or _
       Target.Address = ch4 Or _
       Target.Address = ch5 Or _
       Target.Address = ch6 Or _
       Target.Address = ch7 Or _
       Target.Address = ch8) Then
        wasMouseClick = True
    End If
    Set prevTarget = ActiveCell
    If wasMouseClick Then
        Debug.Print wasMouseClick ' replace with what you want when wasMouseClick = True
    End If

Exit Sub
error_noPreTarget:
Set prevTarget = Selection
End Sub

Mouse Click Event in VBA (Microsoft Excel), Supriyo asked if there is a mouse event handler in VBA. He wants a value inserted in a cell when that cell is clicked on. The standard way to do  This tutorial will teach you how to interact with Cell Values using VBA. Set Cell Value. To set a Cell Value, use the Value property of the Range or Cells object. Range.Value & Cells.Value. There are two ways to reference cell(s) in VBA: Range Object – Range(“A2”).Value; Cells Object – Cells(2,1).Value

How to trigger or run a Macro by clicking a specific cell in Excel?, The following VBA code can help you to run a Macro by clicking a specific cell in cell you need to click to run a Macro, right click the sheet tab, and then click  Latest info have. i need a left click work around, if left click does not exist (ms: please make a left click).. NOTES: found by goog: vba excel event mouse click vba excel classkey constant left mouse click . have read that mouse clicks have same as keyboard assignments, for events? - some work around should be possible comming or going

VBA: EVENTS Mouse click vs Select cell?, THOUGHT I had the answer. seems Left Click not interchangeable into the answer if can get an event macro to only work when a mouse click on a cell, in a specific column 'If Cells(.Row, "A").Value = "." Then Exit Sub 'cannot get these 2 lines to work: if a vba excel classkey constant left mouse click. If a mouse button is pressed while the pointer is over a form or control, that object "captures" the mouse and receives all mouse events up to and including the last MouseUp event. This implies that the X , Y mouse-pointer coordinates returned by a mouse event may not always be within the boundaries of the object that receives them.

VB Macro to capture mouseclick on excel sheet cell, I wish to have a VB macro constantly running on a will increment the value of a cell when that cell is clicked on with the mouse. I'm running Excel 2007. Option Explicit Public Event Click(ByVal Target As Range) Private Type POINTAPI x VBA copy and paste to new sheet based on number of rows. You could use Excel VBA to move the mouse and click on things (left and right click). Below is an example of moving the mouse to the top left of the screen and then clicking. Just copy the code and paste it into macro window in Excel. The SingleClick() subroutine is a single click, while DoubleClick() subroutine does a double click.

Comments
  • I can think of SelectionChange events, though this would be if, e.g., B1 was selected then you clicked on B2, but not B1 and reselect B1.
  • In thinking, you could have part of your code to reset the selection to, say, A1, then no matter the click it can copy, if in the range.
  • Not so many are willing to write a code for you from scratch. You should come here with a half full glass, instead of an empty one, so that we can explain you why your glass is empty and advise what to do next.
  • Try declaring some windows DLL and use it. e.g.: Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer or Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
  • Thanks Mr DaBeau96.With whatever limited knowledge of VBA I have your answer seems to me the nearest one.
  • Thanks Mr DaBeau96. With my limited knowledge of VBA, your answer seems to me the nearest one. Before asking the question in the forum I did extensive research on Google and understood that there is no left mouse click event capture in VBA, so any solution will be a workaround only. However VBA has double click mouse event capture functionality so the answer posted by Mr K Davis is also correct. So I did my homework and it was not that I came here with an empty glass as mentioned by Mr Tehscript. I hope this forum helps the amateur users like me as well. Thanks to all who provided the solution
  • I knew there wasn't a mouse click option and that the closest thing to it was SelectionChange in my experience. I wasn't sure how you wanted the values stored so I just put them in a cell so you could easily see which values you wanted stored