使用鼠标按钮更改单元格值 - Excel

时间:2014-05-09 11:55:57

标签: excel vba

我正在尝试使用鼠标按钮更改单元格的值。 我想做的是:

如果您左键单击某个范围的单元格:F3到F500,G3到G500。并且单元格中有一个数值。让我们说7.添加1.所以,如果我左键单击F4,其值为7.如果我右键单击该单元格,则减去。单元格(7)的值变为6。

我对VBA很新,我甚至不知道如何开始。所以我的问题是:我如何做到以上几点?如果这个问题不够具体。如何在这些单元格上注册鼠标?

2 个答案:

答案 0 :(得分:1)

所以,经过一些尝试后,我得到了这段代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Intersection
Dim Rng As Range
Set Rng = Range(Cells(3, 6), Cells(500, 7))

Set Intersection = Application.Intersect(Target, Rng)
If Not Intersection Is Nothing Then
    If IsNumeric(Selection.Value) And Selection.Value <> "" Then
        If (GetAsyncKeyState(vbKeyRButton)) Then 'right mouse button
            Selection.Value = (Selection.Value - 1)
        ElseIf (GetAsyncKeyState(vbKeyLButton)) Then 'left mouse button
            Selection.Value = (Selection.Value + 1)
        End If
        Cells(Selection.Row, 1).Select
    End If
End If

End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
End Sub

您必须将此代码粘贴到工作表的代码部分(最有可能&#34; Sheet1&#34;&#34; Microsoft Excel对象&#34;在Visual Basic视图中) )。它不会在其他模块中工作,但具体工作表之一。您还必须将以下代码添加到常规模块(最可能的是&#34; Module1&#34;):

Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

它可以帮助您查看此代码的作用: SelectionChange 总是在工作表中进行选择时调用,左键单击,右键单击,箭头按钮等之间没有区别。关键状态功能允许我们专门检查左键或右键。

所选单元格始终切换到左侧的同一行,因为Excel无法检测到另一个左键单击(左键单击没有特定事件,同一单元格也不会出现。 t再次触发 SelectionChange

答案 1 :(得分:0)

此代码使用双击。在工作表代码区域中输入以下事件宏:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim FG As Range
    Set FG = Range("F3:G500")
    If Intersect(Target, FG) Is Nothing Then Exit Sub
    Cancel = True
    Target.Value = Target.Value + 1
End Sub

因为它是工作表代码,所以很容易安装和自动使用:

  1. 右键单击Excel窗口底部附近的选项卡名称
  2. 选择查看代码 - 这会打开一个VBE窗口
  3. 粘贴内容并关闭VBE窗口
  4. 如果您有任何疑虑,请先在试用工作表上试用。

    如果保存工作簿,宏将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

    删除宏:

    1. 按上述方式调出VBE窗口
    2. 清除代码
    3. 关闭VBE窗口
    4. 要了解有关宏的更多信息,请参阅:

      http://www.mvps.org/dmcritchie/excel/getstarted.htm

      http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

      要了解有关事件宏(工作表代码)的更多信息,请参阅:

      http://www.mvps.org/dmcritchie/excel/event.htm

      必须启用宏才能使其生效!