使用鼠标button更改单元格值 – Excel

我正在尝试用鼠标button更改单元格的值。 我想要做的是这样的:

如果您单击某个范围的单元格:F3到F500和G3到G500。 在单元格中有一个数值。 让我们说7.添加1.所以,如果我离开点击F4具有值7.值变成8.如果我右键单击该单元格它会减去。 小区(7)的值变为6。

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

所以,经过一些尝试,我得到了这个代码的工作:

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 

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

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

它可以帮助你看看这个代码的作用: SelectionChange总是被调用在工作表中select,左键单击,右键单击,箭头button等没有不同。键状态function允许我们检查左或右击。

所选的单元格总是切换到左侧的同一行,因为Excel将无法检测到另一个左键单击(没有特定的左键单击事件,同一单元格不会再触发SelectionChange )。

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

 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. select查看代码 – 这会popup一个VBE窗口
  3. 粘贴东西,closuresVBE窗口

如果您有任何疑问,请先在试用工作表上尝试。

如果您保存该工作簿,该macros将与它一起保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx

要删除macros:

  1. 调出上面的VBE窗口
  2. 清除代码
  3. closuresVBE窗口

要了解有关macros的更多信息,请参阅:

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

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

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

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

macros必须启用这个工作!