首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用鼠标按钮更改单元格值- Excel

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

Stack Overflow用户
提问于 2014-05-09 11:55:57
回答 2查看 3.6K关注 0票数 2

我试图用鼠标按钮更改单元格的值。我想做的是:

如果你左键点击一定范围的单元格: F3到F500,G3到G500。在单元格中有一个数值。如果我左键单击值为7的F4,值变为8,如果我右键单击该单元格,它会减去。单元(7)的值变为6。

我对VBA非常陌生,我甚至不知道如何开始。所以我的问题是:我该怎么做呢?如果这个问题不够具体的话。如何注册这些单元格上的鼠标单击?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-09 12:55:40

所以,经过一段时间的尝试,我让这段代码开始工作了:

代码语言:javascript
复制
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"):

代码语言:javascript
复制
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

它可能会帮助您了解此代码的功能:在工作表中总是调用SelectionChange,而不是左键、右击、箭头按钮等。键状态函数允许我们专门检查左键或右击。

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

票数 1
EN

Stack Overflow用户

发布于 2014-05-09 12:55:23

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

代码语言:javascript
复制
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窗口

如果您有任何问题,请先在试用表上试用。

如果您保存工作簿,则将使用它保存宏。如果您在2003年晚些时候使用Excel版本,则必须将该文件保存为.xlsm而不是.xlsx。

若要删除宏,请执行以下操作:

  1. 打开上面的VBE窗口
  2. 清除代码
  3. 关闭VBE窗口

要了解有关宏的更多信息,请参见:

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

必须启用宏才能使其工作!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23564019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档