当前位置: 首页 > news >正文

VBA窗体跟随活动单元格【简易版】(2/2)

上一篇博客(文章连接如下)中使用工作表事件Worksheet_SelectionChange实现了窗体跟随活动单元格的动态效果。

VBA窗体跟随活动单元格【简易版】(1/2)

为了在用户滚动工作表窗体之后仍能够实现跟随效果,需要使用Application.Windows(1).VisibleRange对于显示位置进行调整。俗话说,条条大路通罗马,本文将接受另外一个实现方法。

示例代码如下。

' -- 普通(标准)模块代码 --
Public bShow As Boolean' -- ThisWorkbook 模块代码 --
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)If bShow Then Unload UserForm1
End Sub' -- 工作表模块代码 --
Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim frm, TopOffset As Single, LeftOffset As SingleTopOffset = 162LeftOffset = -6If Not bShow Then UserForm1.Show 0Set frm = UserForm1With TargetIf .Column = 2 Thenfrm.Show 0frm.Top = ExecuteExcel4Macro("GET.CELL(43)") + TopOffsetfrm.Left = ExecuteExcel4Macro("GET.CELL(42)") + .Width + LeftOffsetElsefrm.HideEnd IfEnd With
End Sub

【代码解析】
代码框架与上一篇博客相同,这里不再赘述,只讲解变更的部分。
第20行和第21行代码分别设置窗体的Top属性和Left属性,即调整窗体的显示位置。
其中使用了宏表函数GET.CELL(x)获取单元格的位置,42代表垂直偏移,43代码水平偏移。


使用GET.CELL(x)获取单元格的位置,和单元格的Top属性和Left属性是否相同呢?接下来就验证一下。

Sub Demo()Debug.Print ActiveCell.Top, ActiveCell.TopDebug.Print ExecuteExcel4Macro("GET.CELL(43)"), _ExecuteExcel4Macro("GET.CELL(42)")
End Sub

在这里插入图片描述

同样都是单元格A1为活动单元格,在3种不同状态运行上述代码,结果如下。不难看出:

  • 单元格的Top属性和Left属性在3中场景中都是相同的,也可以说两个属性是以A1单元格左上角为坐标原点的偏移量,两个属性返回值为非负数。
  • GET.CELL(x)返回值是随着显示状态不同而变化,其值可正可负,其坐标原点大致位于图中鼠标箭头所在位置。
 0             0 17.2          25 0             0 
-80           -27.80             0 51.4          25 

正是由于GET.CELL(x)具备这个特性,所以在调整自定义窗体显示位置时,无需再使用Application.Windows(1).VisibleRange。由于坐标原点有变化,TopOffsetLeftOffset偏移量也需要进行相应的调整。

请添加图片描述

http://www.lryc.cn/news/283980.html

相关文章:

  • 个性化定制的知识付费小程序,为用户提供个性化的知识服务
  • 【轮式平衡机器人】——软硬件配置/准备
  • 中国联通助力吴江元荡生态岸线打造5G+自动驾驶生态长廊
  • 小白准备蓝桥杯之旅(c/c++b组)
  • Flutter GetX 之 国际化
  • 349. 两个数组的交集(力扣)(OJ题)
  • 安全帽识别-赋能深圳自贸中心智慧工地
  • 代码之外:工程师的成长进阶秘籍
  • openssl3.2 - 官方demo学习 - smime - smsign2.c
  • 6.C++对象模型
  • AbstractHttpMessageConverter + easyexcell优雅下载附件
  • 虚拟线程探索与实践
  • openssl3.2 - 官方demo学习 - mac - poly1305.c
  • 【Python 千题 —— 基础篇】不吉利的数字
  • 3d模型未响应打不开怎么办---模大狮模型网
  • Java-NIO 开篇(1)
  • VSCode 插件推荐
  • 摄像部分时序
  • 为什么 Golang Fasthttp 选择使用 slice 而非 map 存储请求数据
  • C#设计模式教程(7):适配器模式
  • 1818:红与黑【解析】-------深度优先搜索
  • 实验三 Oracle数据库的创建和管理
  • Mysql:重点且常用的 SQL 标签整理
  • 云锁防火墙编译安装nginx-plugin模块
  • 【服务器数据恢复】服务器迁移数据时lun数据丢失的数据恢复案例
  • 6.4.2转换文件
  • 智能驾驶新浪潮:SSD与UFS存储技术如何破浪前行?-UFS篇
  • TS 学习笔录(持续更新中)
  • RabbitMQ安装和使用
  • 使用pyechart创建折线图