ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 16667|回复: 26

【求助】如何使按键始终显示在我看得到的地方

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-11-15 14:47 | 显示全部楼层 |阅读模式

不知道可不可以描述清楚,这样一个问题:

我设置了一个按键类型的控件,但是我的工作表很长,当我滚动工作表到下面的时候

那个按键也被滚到看不到的地方了……(滚到上面去了)

有什么办法能让按键一直显示在屏幕上,而不因为我拖动工作表而被拖上去?

不知道这样描述清楚了么?

TA的精华主题

TA的得分主题

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

变通一下:

把按键放在第1、2行,再冻结窗格(定格前2行)

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-11-15 14:55 | 显示全部楼层
QUOTE:
以下是引用老申在2007-11-15 14:49:58的发言:

变通一下:

把按键放在第1、2行,再冻结窗格(定格前2行)

OK~真是太感谢了~

但是还是想多问一句,如果我就是想实现“让按键始终浮在指定位置”这样的功能,要怎么做呢?属性里可以设置么?或者有什么代码么?

TA的精华主题

TA的得分主题

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

在工具栏添加宏自定义按钮

[此贴子已经被作者于2007-11-15 15:03:40编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-11-15 15:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用zlt518在2007-11-15 14:59:53的发言:

在工具栏添加宏自定义按钮


没有听明白……能说的稍微详细一点么?

TA的精华主题

TA的得分主题

发表于 2007-11-15 15:13 | 显示全部楼层
QUOTE:
以下是引用Dreamer_09在2007-11-15 14:55:52的发言:

OK~真是太感谢了~

但是还是想多问一句,如果我就是想实现“让按键始终浮在指定位置”这样的功能,要怎么做呢?属性里可以设置么?或者有什么代码么?

Declare Function SetTimer _
   Lib "user32" ( _
        ByVal hWnd As Long, _
        ByVal nIDEvent As Long, _
        ByVal uElapse As Long, _
        ByVal lpTimerFunc As Long) _
As Long
Declare Function KillTimer _
   Lib "user32" ( _
        ByVal hWnd As Long, _
        ByVal nIDEvent As Long) _
As Long
Declare Function GetCursorPos _
   Lib "user32" ( _
        lpPoint As POINTAPI) _
As Long
Type POINTAPI
    X As Long
    Y As Long
End Type
Dim ChangeOn As Boolean
Dim m_lngTimerId As Long
'
Sub StartTimer()
    If Not ChangeOn Then
        m_lngTimerId = SetTimer(0, 0, 200, AddressOf TimerProc)
        ChangeOn = True
    End If
End Sub
Public Function TimerProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    On Error Resume Next
    If Sheets(1).CommandButton1.Top <> Cells(ActiveWindow.ScrollRow, ActiveWindow.ScrollColumn).Top + 60 Then Sheets(1).CommandButton1.Top = Cells(ActiveWindow.ScrollRow, ActiveWindow.ScrollColumn).Top + 60
    If Sheets(1).CommandButton1.Left <> Cells(ActiveWindow.ScrollRow, ActiveWindow.ScrollColumn).Left + 100 Then Sheets(1).CommandButton1.Left = Cells(ActiveWindow.ScrollRow, ActiveWindow.ScrollColumn).Left + 100
    TimerProc = 0
End Function
Sub StopTimer()
    On Error Resume Next
    If ChangeOn = True Then
        KillTimer 0, m_lngTimerId
        ChangeOn = False
    End If
End Sub

见附件

 

oCxelnbZ.rar (11.95 KB, 下载次数: 1072)

TA的精华主题

TA的得分主题

发表于 2007-11-15 15:27 | 显示全部楼层

在工具栏--自定义--命令--自定义按钮

点住自定义按钮,拖至工具栏的适当位置,放开即可;

然后,右键点击连接宏。


【求助】如何使按键始终显示在我看得到的地方

【求助】如何使按键始终显示在我看得到的地方

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-11-15 15:28 | 显示全部楼层
QUOTE:
以下是引用wangminbai在2007-11-15 15:13:58的发言:

Declare Function SetTimer _
   Lib "user32" ( _
        ByVal hWnd As Long, _
        ByVal nIDEvent As Long, _
        ByVal uElapse As Long, _
        ByVal lpTimerFunc As Long) _
As Long
Declare Function KillTimer _
   Lib "user32" ( _
        ByVal hWnd As Long, _
        ByVal nIDEvent As Long) _
As Long
Declare Function GetCursorPos _
   Lib "user32" ( _
        lpPoint As POINTAPI) _
As Long
Type POINTAPI
    X As Long
    Y As Long
End Type
Dim ChangeOn As Boolean
Dim m_lngTimerId As Long
'
Sub StartTimer()
    If Not ChangeOn Then
        m_lngTimerId = SetTimer(0, 0, 200, AddressOf TimerProc)
        ChangeOn = True
    End If
End Sub
Public Function TimerProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    On Error Resume Next
    If Sheets(1).CommandButton1.Top <> Cells(ActiveWindow.ScrollRow, ActiveWindow.ScrollColumn).Top + 60 Then Sheets(1).CommandButton1.Top = Cells(ActiveWindow.ScrollRow, ActiveWindow.ScrollColumn).Top + 60
    If Sheets(1).CommandButton1.Left <> Cells(ActiveWindow.ScrollRow, ActiveWindow.ScrollColumn).Left + 100 Then Sheets(1).CommandButton1.Left = Cells(ActiveWindow.ScrollRow, ActiveWindow.ScrollColumn).Left + 100
    TimerProc = 0
End Function
Sub StopTimer()
    On Error Resume Next
    If ChangeOn = True Then
        KillTimer 0, m_lngTimerId
        ChangeOn = False
    End If
End Sub

见附件


万分感谢,我拿去研究已下了~

TA的精华主题

TA的得分主题

发表于 2007-11-15 15:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用wangminbai在2007-11-15 15:13:58的发言:

Declare Function SetTimer _
   Lib "user32" ( _
        ByVal hWnd As Long, _
        ByVal nIDEvent As Long, _
        ByVal uElapse As Long, _
        ByVal lpTimerFunc As Long) _
As Long
Declare Function KillTimer _
   Lib "user32" ( _
        ByVal hWnd As Long, _
        ByVal nIDEvent As Long) _
As Long
Declare Function GetCursorPos _
   Lib "user32" ( _
        lpPoint As POINTAPI) _
As Long
Type POINTAPI
    X As Long
    Y As Long
End Type
Dim ChangeOn As Boolean
Dim m_lngTimerId As Long
'
Sub StartTimer()
    If Not ChangeOn Then
        m_lngTimerId = SetTimer(0, 0, 200, AddressOf TimerProc)
        ChangeOn = True
    End If
End Sub
Public Function TimerProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    On Error Resume Next
    If Sheets(1).CommandButton1.Top <> Cells(ActiveWindow.ScrollRow, ActiveWindow.ScrollColumn).Top + 60 Then Sheets(1).CommandButton1.Top = Cells(ActiveWindow.ScrollRow, ActiveWindow.ScrollColumn).Top + 60
    If Sheets(1).CommandButton1.Left <> Cells(ActiveWindow.ScrollRow, ActiveWindow.ScrollColumn).Left + 100 Then Sheets(1).CommandButton1.Left = Cells(ActiveWindow.ScrollRow, ActiveWindow.ScrollColumn).Left + 100
    TimerProc = 0
End Function
Sub StopTimer()
    On Error Resume Next
    If ChangeOn = True Then
        KillTimer 0, m_lngTimerId
        ChangeOn = False
    End If
End Sub

见附件

 


学习了!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-11-15 15:44 | 显示全部楼层

看来VBA实现这个确实不是很理想

但是6楼的前辈写的实在是太强了

学到了很多东西

受教了,万分感谢

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 19:27 , Processed in 0.040430 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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