ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: FENGJUN

求教ldhyob斑竹:怎样实现BUTTON的工作表浏览器窗体的RISIZE?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2004-7-5 16:57 | 显示全部楼层

唉!唉! 大家幫忙看看.我的想法是這樣.. 1. thisworkbook Private Sub WorkBook_Open() XLhwnd = FindWindow("XLMAIN", vbNullString) ParentHwnd = FindWindowEx(XLhwnd, ByVal 0&, "XLDESK", vbNullString) 'prevWndProc = SetWindowLong(ParentHwnd, GWL_WNDPROC, AddressOf WndProc) Set myApp = New Class1 Set myApp.clsApp = Application Me.IsAddin = False flg = True With Application.CommandBars("standard").Controls.Add(Type:=msoControlButton, before:=1, temporary:=True) .FaceId = 200 .OnAction = "myReload" End With myInit chgXLDESKrgn End Sub 2. module Public prevWndProc As Long

Function WndProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long WndProc = CallWindowProc(prevWndProc, hWnd, Msg, wParam, lParam) If Msg = WM_SIZE Then If flg Then 'Call frmExplorer.Image1_Click 'Use this statement if you want to hide the explorer after the window resized 'Call myReload 'Use this statement if you want to show the explorer after the window resized End If End If End Function 情形是這樣的... remark這一行 'prevWndProc = SetWindowLong(ParentHwnd, GWL_WNDPROC, AddressOf WndProc) 當然就沒有callback啦.沒有解決上面的問題.但是功能大致可行.僅是有時候要要多按一下而已. 請大家測試callback功能.去掉這行remark. 為何就是不穩定總是當機?難道callback函數在excel還不行用?

cP0IctR5.rar (42.05 KB, 下载次数: 37)

TA的精华主题

TA的得分主题

发表于 2004-7-6 10:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

Workbooks Browser

終於不負眾望.圓滿完成.
感謝BUTTON及ldhyob版主熱心指導.
請各位先進大力給予批評指教.
口令:crdotlin

GWRhskWJ.rar (48.27 KB, 下载次数: 139)
粉累! 原來插花的.不意竟然下桌主打至今.
[此贴子已经被清风_ll于2006-8-28 13:40:54编辑过]

TA的精华主题

TA的得分主题

发表于 2004-7-6 11:14 | 显示全部楼层

菱角 辛苦了,理应给一个精华。

台湾朋友中,高手真是不少。

头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2004-7-6 12:05 | 显示全部楼层
我这也出现了这个问题。我的环境是winxo+off2000

TA的精华主题

TA的得分主题

发表于 2004-7-6 12:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
呵....真的還沒完沒了. 要丟還給BUTTON了. 請BUTTON多費心了.

TA的精华主题

TA的得分主题

发表于 2004-7-6 12:53 | 显示全部楼层
以下是引用Emily在2004-7-6 11:29:00的发言:

不是 "理應.."

強烈要求給 精華

谢谢 Emily 的“抗议”。

不过,在您的“抗议”之前,菱角的此答复已经被定为精华了!哈哈。

TA的精华主题

TA的得分主题

发表于 2004-7-6 22:01 | 显示全部楼层
以下是引用button在2004-7-6 11:52:00的发言:

我的环境是win2k+offxp,无法开启其它工作表,新建的工作表也找不到

只要用了鉤子函數就會如button所說. 請測試看看. Private Sub WorkBook_Open() XLhwnd = Application.hWnd 'FindWindow("XLMAIN", vbNullString) ParentHwnd = FindWindowEx(XLhwnd, ByVal 0&, "XLDESK", vbNullString) Set myApp = New Class1 Set myApp.clsApp = Application With Application.CommandBars("standard").Controls.Add(Type:=msoControlButton, before:=1, temporary:=True) .FaceId = 200 .OnAction = "myReload" End With myInit chgXLDESKrgn 'HookMe '試試這個.可以準確抓到move,size,mix,min但..... mySizeCh '最後還是用回這個. End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean) 'UnhookWindowsHookEx hHook On Error Resume Next Application.OnTime nTm, "reNewIt", schedule:=False Application.OnTime mTm, "mySizeCh", schedule:=False On Error GoTo 0 Do With Application.CommandBars("standard").Controls(1) If .FaceId = 200 Then .Delete End With Loop Until Application.CommandBars("standard").Controls(1).FaceId <> 200 Unload frmExplorer MYrestore Set myApp = Nothing End Sub 敬請指教.並提供更佳方法

0YXYUik5.rar (52.02 KB, 下载次数: 159)
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2004-7-7 14:31 | 显示全部楼层
文件执行错误,语句停留在 : XLhwnd = Application.hWnd 'FindWindow("XLMAIN", vbNullString) ,我用的是:winXP+office2000 ,请指教。

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-7-7 15:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

菱角:

辛苦了!这样专业水准的帖子是不多见的.

似乎还有些微瑕:滑鼠的箭头老在抖动.

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-7-19 16:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用菱角在2004-7-6 22:01:00的发言:

只要用了鉤子函數就會如button所說. 請測試看看. Private Sub WorkBook_Open() XLhwnd = Application.hWnd 'FindWindow("XLMAIN", vbNullString) ParentHwnd = FindWindowEx(XLhwnd, ByVal 0&, "XLDESK", vbNullString) Set myApp = New Class1 Set myApp.clsApp = Application With Application.CommandBars("standard").Controls.Add(Type:=msoControlButton, before:=1, temporary:=True) .FaceId = 200 .OnAction = "myReload" End With myInit chgXLDESKrgn 'HookMe '試試這個.可以準確抓到move,size,mix,min但..... mySizeCh '最後還是用回這個. End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean) 'UnhookWindowsHookEx hHook On Error Resume Next Application.OnTime nTm, "reNewIt", schedule:=False Application.OnTime mTm, "mySizeCh", schedule:=False On Error GoTo 0 Do With Application.CommandBars("standard").Controls(1) If .FaceId = 200 Then .Delete End With Loop Until Application.CommandBars("standard").Controls(1).FaceId <> 200 Unload frmExplorer MYrestore Set myApp = Nothing End Sub 敬請指教.並提供更佳方法

求教ldhyob斑竹:怎样实现BUTTON的工作表浏览器窗体的RISIZE?

求教ldhyob斑竹:怎样实现BUTTON的工作表浏览器窗体的RISIZE?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-22 00:05 , Processed in 0.040610 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表