问题探讨01: 如何使用鼠标滚轮使单元格中的数值增减?

雪夜
发布: 2025-09-14 08:12:02
原创
801人浏览过

要实现鼠标滚轮控制单元格数值的增加和减少,我们需要对现有代码进行修改,使其能够区分鼠标滚轮的前后滚动,并相应地调整单元格中的数值。以下是经过修改的代码,确保它能够实现你所期望的功能:

Public hHook As LongPtr
<h1>If VBA7 Then</h1><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">Public Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As LongPtr, ByVal hmod As LongPtr, ByVal dwThreadId As Long) As LongPtr
Public Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" (ByVal hhk As LongPtr) As Long
Public Declare PtrSafe Function CallNextHookEx Lib "user32" (ByVal hHook As LongPtr, ByVal ncode As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr
Public Declare PtrSafe Function GetCurrentThreadId Lib "kernel32" () As Long
登录后复制

End If

Public Const WH_MOUSE = 7 Public Const WM_MOUSEWHEEL = &H20A

Sub BeginHK() '获取当前的线程ID i = GetCurrentThreadId '这里安装的是鼠标钩子 hHook = SetWindowsHookEx(WH_MOUSE, AddressOf HookProc, 0, i) End Sub

'Hook程序 Public Function HookProc(ByVal code As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As LongPtr Dim wks As Worksheet Set wks = Excel.ActiveSheet

<pre class="brush:php;toolbar:false;">'如果code参数<0,则一定要返回CallNextHookEx函数的返回值
If code < 0 Then
    HookProc = CallNextHookEx(hHook, code, wParam, lParam)
    Exit Function
End If

'检查是否是鼠标滚轮事件
If code = HC_ACTION And wParam = WM_MOUSEWHEEL Then
    Dim zDelta As Integer
    zDelta = (wParam And &HFFFF0000) \ &H10000

    Dim activeCell As Range
    Set activeCell = wks.Application.ActiveCell

    '检查活动单元格是否包含数字
    If IsNumeric(activeCell.Value) Then
        If zDelta > 0 Then
            '鼠标滚轮向前滚动,增加0.01
            activeCell.Value = activeCell.Value + 0.01
        ElseIf zDelta < 0 Then
            '鼠标滚轮向后滚动,减少0.01
            activeCell.Value = activeCell.Value - 0.01
        End If
    End If
End If

'继续传递消息给其他钩子
HookProc = CallNextHookEx(hHook, code, wParam, lParam)
登录后复制

End Function

Sub EndHK() '卸载钩子 UnhookWindowsHookEx hHook End Sub

这段代码的主要修改点如下:

  1. 捕获鼠标滚轮事件:我们使用
    WM_MOUSEWHEEL
    登录后复制
    常量来识别鼠标滚轮事件。
  2. 获取滚轮方向:通过
    zDelta
    登录后复制
    变量来判断滚轮的滚动方向。
    zDelta
    登录后复制
    的值大于零表示滚轮向前滚动,小于零表示滚轮向后滚动。
  3. 调整单元格值:根据
    zDelta
    登录后复制
    的值,相应地增加或减少单元格中的数值。

使用这个修改后的代码,你应该能够实现鼠标滚轮向前滚动时单元格中的数值增加0.01,向后滚动时减少0.01的功能。

慧中标AI标书
慧中标AI标书

慧中标AI标书是一款AI智能辅助写标书工具。

慧中标AI标书 120
查看详情 慧中标AI标书

问题探讨01: 如何使用鼠标滚轮使单元格中的数值增减?图1

请注意,使用这段代码时,需要在Excel中运行

BeginHK
登录后复制
子程序来启动钩子,并在完成操作后运行
EndHK
登录后复制
子程序来卸载钩子。如果有任何问题或需要进一步的调整,请随时告知。

以上就是问题探讨01: 如何使用鼠标滚轮使单元格中的数值增减?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号