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.hqwc.cn/news/414946.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

010-新手如何建立一个属于自己的图像处理FPGA/ZYNQ框架(自己的用着才舒服,内容非常全面!)

文章目录 前言一、图像处理框架二、图像采集输入1.常用视频流格式:Rgb565/Bayer1.RGB565数据流格式2.Bayer阵列数据流格式 2.图像预处理:时钟域同步/去马赛克/色彩空间转换/滤波1.时钟域同步2.图像去马赛克化3.色彩空间转换4.滤波 三、图像算法处理1.图像…

P9847 [ICPC2021 Nanjing R] Crystalfly 题解 (SPJ)

[ICPC2021 Nanjing R] Crystalfly 传送门? 题面翻译 给定一个 n ( 1 ≤ n ≤ 1 0 5 ) n(1\le n\le10^5) n(1≤n≤105) 个节点的树,每个节点上有 a i a_i ai​ 只晶蝶。派蒙最初在 1 1 1 号节点,并获得 1 1 1 号节点的所有晶蝶&#xf…

铝壳电阻在哪些领域和应用中常见?

铝壳电阻是一种常见的电子元件,广泛应用于各种领域和应用场景。以下是铝壳电阻在各个领域和应用中的常见用途: 电力系统:铝壳电阻在电力系统中主要用于限制电流、分压和负载平衡。它们通常安装在变压器、发电机、电动机等设备中,以…

【特征工程】分类变量:简洁而高效的频数编码(Frequency Encoding)

频数编码(Frequency Encoding):一个简洁而高效的特征编码方法 1. 频数编码是什么? 频数编码的主要思想是用每个类别在数据集中出现的频率来替代原始的类别标签。这样可以用一个单一的数值来代表每个类别,而不引入高维…

2024-01-19(SpringCloudThreadLocal)

1.Seata的TC服务注册到Nacos注册中心当中 2.Seata为我们提供了AT,TCC,SAGA,XA事务解决方案。 3.XA规范是一种分布式事务处理标准,XA规范描述了全局的TM与局部的RM之间的接口,几乎所有的主流的数据库都对XA规范提供了…

innoDB存储引擎

1.逻辑存储结构 行数据->行->页->区->段->表空间 表空间(ibd文件),一个mysql实例可以对应多个表空间,来存储记录,索引等数据。 段:分为数据段和索引段,回滚段,数据段就是B树的叶子节点&am…

红队渗透靶机:TOPPO: 1

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 5、dirsearch WEB tips1 tips2 SSH登录 提权 系统信息收集 本地 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:69:c7:bf, IPv4: 192.168.110…

Python连接数据库的梳理

我们通常用的数据库类型主要有关系型数据库,非关系型数据库等,其中关系型数据库主要有Microsoft SQL Server ,MySQL,Oracle,SQLite等,常用的非关系型数据库包括Redis、DynamoDB,MongoDB等 ​​​​​​​ 一 关系型…

策略路由与NQA联动示例

某公司网络使用SwitchA做汇聚层交换机,接入层交换机LSW做用户网关,LSW和SwitchA之间路由可达。汇聚层交换机SwitchA通过两条链路连接到两个核心交换机上,一条是高速链路,网关为10.1.20.1/24;另外一条是低速链路&#x…

2024 年 8 款最好的免费 OCR 软件

2024 年 8 款最佳 OCR 软件通过使用最好的 OCR 软件,您可以快速扫描文章、表格和其他文本,并将它们保存为 PDF 格式。OCR 代表光学字符识别,因此当您需要优化工作流程并通过将发票、报告和其他办公室文档转换为更易于存储和与同事共享的数字文…

AI新工具(20240119):Coach 微软推出独立 AI 工具辅助提高学习者阅读能力,Tweetify长文转换

Reading Coach-微软推出独立 AI 工具辅助提高学习者阅读能力 微软的Reading Coach是一款面向学生群体的生成式AI工具,旨在通过个性化和有吸引力的练习帮助学习者提高阅读能力。用户只需要登录微软账号,就能在课堂或者家中免费使用这款工具。Reading Coa…