我试图用鼠标按钮更改单元格的值。我想做的是:
如果你左键点击一定范围的单元格: F3到F500,G3到G500。在单元格中有一个数值。如果我左键单击值为7的F4,值变为8,如果我右键单击该单元格,它会减去。单元(7)的值变为6。
我对VBA非常陌生,我甚至不知道如何开始。所以我的问题是:我该怎么做呢?如果这个问题不够具体的话。如何注册这些单元格上的鼠标单击?
发布于 2014-05-09 12:55:40
所以,经过一段时间的尝试,我让这段代码开始工作了:
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视图中"Microsoft对象“下的"Sheet1”)。它不会在其他模块中工作,而是在特定的工作表中工作。还必须将以下代码添加到常规模块(很可能是"Module1"):
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer它可能会帮助您了解此代码的功能:在工作表中总是调用SelectionChange,而不是左键、右击、箭头按钮等。键状态函数允许我们专门检查左键或右击。
选定的单元格总是切换到左侧的同一行,因为Excel将无法检测到另一个左键(左击没有特定事件,同一单元格也不会再次触发SelectionChange )。
发布于 2014-05-09 12:55:23
此代码使用双击。在工作表代码区域中输入以下事件宏:
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
必须启用宏才能使其工作!
https://stackoverflow.com/questions/23564019
复制相似问题