我正在尝试使用鼠标按钮更改单元格的值。 我想做的是:
如果您左键单击某个范围的单元格:F3到F500,G3到G500。并且单元格中有一个数值。让我们说7.添加1.所以,如果我左键单击F4,其值为7.如果我右键单击该单元格,则减去。单元格(7)的值变为6。
我对VBA很新,我甚至不知道如何开始。所以我的问题是:我如何做到以上几点?如果这个问题不够具体。如何在这些单元格上注册鼠标?
答案 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
因为它是工作表代码,所以很容易安装和自动使用:
如果您有任何疑虑,请先在试用工作表上试用。
如果保存工作簿,宏将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
删除宏:
要了解有关宏的更多信息,请参阅:
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
必须启用宏才能使其生效!