要实现鼠标滚轮控制单元格数值的增加和减少,我们需要对现有代码进行修改,使其能够区分鼠标滚轮的前后滚动,并相应地调整单元格中的数值。以下是经过修改的代码,确保它能够实现你所期望的功能:
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
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
这段代码的主要修改点如下:
WM_MOUSEWHEEL
zDelta
zDelta
zDelta
使用这个修改后的代码,你应该能够实现鼠标滚轮向前滚动时单元格中的数值增加0.01,向后滚动时减少0.01的功能。
图1
请注意,使用这段代码时,需要在Excel中运行
BeginHK
EndHK
以上就是问题探讨01: 如何使用鼠标滚轮使单元格中的数值增减?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号