Excel VBA userform scrollbars 与 鼠标滚轮

Excel VBA userform scrollbars 与 鼠标滚轮,第1张

1、上下滚动表格:在Excel工作表中,选择某个单元格,然后上下滚动滚轮,表格将上下滚动。这有点类似点击滚动条的上下箭头。但点击滚动条的上下箭头每次只能滚动一行, 而滚动鼠标滚轮可以滚动一行或多行。在Windows XP或Windows Vista中,可以在控制面板中设置每次滚动的行数。以Vista为例,方法是:单击“开始→控制面板→鼠标”,d出“鼠标属性”对话框,选择“滑轮”选 项卡,在“垂直滚动”区域中,选择“一次滚动下列行数”,并设置所需的数量。如果选择“一次滚动一个屏幕”,则每滚动一次滚轮,Excel表格将滚动屏幕 所显示的行数,相当于按PageUp或PageDown键。这种方法同样适用于Word或在浏览器中浏览网页。

2、左右滚动表格:在表格中按下滚轮,鼠标变成下面的形状,然后左右拖动鼠标,即可左右滚动表格,如果上下拖动鼠标,也可上下滚动表格。当鼠标离按下的地方越远,滚动的速度就越快。再次按下鼠标或滚动一下滚轮会取消这种滚动。

上不是有么,就是懒人办公插件(LazyOffice)

附一个网上搜到的下载页面:

网页链接

如果只是获得窗口标题,按键精灵中自带的一些方法也能实现

//下面这句是按查找方式(模糊),遍历符合窗口类名(0)且标题("Excel")的句柄,保存到数组(HwndEx)里 

HwndEx = PluginWindowSearchEx(0,"Excel",0) 

MsgBox "查找到符合的窗口句柄为:"& HwndEx 

//下面这句用于分割字符串,将获得的句柄组分割 

dim MyArray 

MyArray = Split(HwndEx, "|") 

If UBound(MyArray)>=0 Then

  i=0 

  For UBound(MyArray) 

      //下面这句将字符串转换成数值 

      //sText = PluginWindowGetText(Clng(MyArray(i)))

      //Msgbox "第 "& i+1 & " 个窗口句柄为:"& Clng(MyArray(i))

       Msgbox "第 "& i+1 & " 个窗口句柄为:"& Clng(MyArray(i)) & ";完整标题为:" & PluginWindowGetText(Clng(MyArray(i)))

      i=i+1 

  Next

End If

请问进程ID取窗口句柄 用哪个API啊 求教~

你是什么语言??VB还是C++?

给你个VB CODE :

Function GetQQpath()

Dim ps, s '获取QQ进程所存在的路径

s = "qqexe"

For Each ps In GetObject("winmgmts:\\\root\cimv2:win32_process")instances_ '循环进程

If UCase(psName) = UCase(s) Then

Form1Label1Caption = psexecutablepath

GoTo q

End If

Next

q:

End Function

这个可以用知道进程名就可以知道程序路径了,原理很简单。自己摸索、

(针对新手: 结果显示在label1上面。否则会出现缺少对象)

我的例子:

Public Const SW_SHOWNORMAL As Long = 1&

Public Sub showexcel ()

    dim hwnd as long

    dim tem as long

    hwnd = FindWindow(vbNullString, "这里填上你的excel表格打开之后任务管理器中应用程序列表对这个窗体的命名(如Microsoft Excel - testxlsx)") '这里的vbNullString 指明了是空字符串也就是在所有程序标题名中找你给的标题名

    tem = ShowWindow(hwnd, SW_SHOWNORMAL) '在这里SW_SHOWNORMAL等同于1&,设置窗体恢复最小化

    xlAppVisible = True

End Sub

可能窗口启动为最小化状态这种状态下visible属性是没有用的无法设置窗口可见,要先恢复窗口状态

用api解决吧很方便刚好之前弄了个小程序用到这个功能

用到两个api  分别是findwindow和showwindow,声明去百度一下添加在一个模块中声明成public,以便调用

首先用findwindow获取excel窗体的句柄存在hwnd变量中然后用showwindow将已经最小化的excel窗体恢复正常窗口然后就可以用excelapplication对象的visible属性设置为可见状态了

在有需要的时候call showexcel就可以,或者将代码加到你的 *** 作中

希望能帮到你

SetCapture

函数功能:该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有

鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。

如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定

的窗口。

函数原型:HWND SetCapture(HWND hwnd);

参数:

hWnd:当前线程里要捕获鼠标的窗口句柄。

返回值:返回值是上次捕获鼠标的窗口句柄。如果不存在那样的句柄,返回值是NULL。

备注:只有前台窗口才能捕获鼠标。如果一个后台窗口想捕获鼠标,则该窗口仅为其光标热

点在该窗口可见部份的鼠标事件接收消息。另外,即使前台窗口已捕获了鼠标,用户也可点

击该窗口,将其调入前台。当一个窗日不再需要所有的鼠标输入时,创建该窗口的线程应当

调用函数ReleaseCapture来释放鼠标。此函数不能被用来捕获另一进程的鼠标输入。

Windows 95:调用SetCaptune会引起失去鼠标捕获的窗口接收一个WM_CAPTURECHANGED

消息。

速查:头文件:Winuserh:输入库:user32lib。

声明:

Declare Function SetCapture Lib "user32" Alias "SetCapture" (ByVal hwnd As Long) As Long

VBA毕竟不是VB,很多功能实现不了那也没办法的。

FindWindow('Shell_TrayWnd',nii);

不知道这能帮助你么

补充:那这样试试(这里的Microsoft Visual Basic是窗口标题名)

Dim hwnd As Long

hwnd = FindWindow(vbNullString, "Microsoft Visual Basic")

If hwnd = 0 Then

Label1Caption = "程序未运行"

Timer1Enabled = True

Exit Sub

End If

If hwnd <> 0 Then

Label1Caption = "程序已运行"

End If

再再补充:那不好意思了,爱莫能助了,下班~- -|

以上就是关于Excel VBA userform scrollbars 与 鼠标滚轮全部的内容,包括:Excel VBA userform scrollbars 与 鼠标滚轮、按键精灵 //获取EXCEL工作簿标题 Plugin.Plug.FindWindows PID,PRO,HWND,P 这是用的什么插件、[求助] VBA API获取窗口句柄 另存为指定文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10090134.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存