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

news2024/11/19 4:34:27

上一篇博客(文章连接如下)中使用工作表事件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 Single
    TopOffset = 162
    LeftOffset = -6
    If Not bShow Then UserForm1.Show 0
    Set frm = UserForm1
    With Target
        If .Column = 2 Then
            frm.Show 0
            frm.Top = ExecuteExcel4Macro("GET.CELL(43)") + TopOffset
            frm.Left = ExecuteExcel4Macro("GET.CELL(42)") + .Width + LeftOffset
        Else
            frm.Hide
        End If
    End With
End Sub

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


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

Sub Demo()
    Debug.Print ActiveCell.Top, ActiveCell.Top
    Debug.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.8

 0             0 
 51.4          25 

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

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1396162.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构Java版(3)——队列Queue

一、概念 队列也是一种线性数据结构,最主要的特点是入队列顺序和出队列顺序是相同的,操作时在队尾入队,在队首出队。在Java中给我们提供了一个泛型队列——Queue,其中最常用的方法有: void offer():入队E …

Ubuntu下将nvidia-smi封装为GUI界面,实时查看显卡信息

和win系统不同的是,在Ubuntu端,系统级的系统监视器中,只能查看内存、CPU和网络状态,并不能查看GPU状态 而使用NVIDIA显卡的朋友都知道一条指令 nvidia-smi 在终端运行后即可查看显卡信息、资源占用情况等 但是这样会占用终端&am…

轮胎侧偏刚度线性插值方法

一、trucksim取数据 步骤一 步骤二 二、数据导入到matlab中 利用simulink的look up table模块 1是侧偏角;2是垂直载荷;输出是侧向力。 侧向力除以侧偏角就是实时的侧偏刚度。

排序:计数排序

目录 思想: 操作步骤: 思路: 注意事项: 优缺点: 代码解析: 完整代码展示: 思想: 计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。 操作步骤&#xff…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C#) Baumer工业相机Baumer工业相机NEOAPI SDK和短曝光功能的技术背景Baumer工业相机通过CameraExplorer软件使用Binning功能Baumer工业相机通过NEOAPI SDK使用Binning功能1.引用合…

2018年认证杯SPSSPRO杯数学建模C题(第二阶段)机械零件加工过程中的位置识别全过程文档及程序

2018年认证杯SPSSPRO杯数学建模 基于轮廓提取与图像配准的零件定位问题研究 C题 机械零件加工过程中的位置识别 原题再现: 在工业制造自动生产线中,在装夹、包装等工序中需要根据图像处理利用计算机自动智能识别零件位置,并由机械手将零件…

python数字图像处理基础(九)——特征匹配

目录 蛮力匹配(ORB匹配)RANSAC算法全景图像拼接 蛮力匹配(ORB匹配) Brute-Force匹配非常简单,首先在第一幅图像中选取一个关键点然后依次与第二幅图像的每个关键点进行(描述符)距离测试&#x…

爆推联盟,推广接单平台定制开发(智创有术)

爆推联盟官网、推广接单平台、很多朋友问我做项目要怎么做,项目怎么选?那些项目比较稳定靠谱,赚钱还不错的平台,其实网上的项目很多,别说做,看都看不过来,我们做项目最主要的就是稳定嘛&#xf…

智能化未来:NFC技术助力数字化社区

引言 数字化转型深刻改变着社区管理的方式,其中NFC技术作为一种近场通讯技术,正在为数字社区的智能化未来提供强有力的支持。 NFC技术简介 近场通讯技术(NFC)是一种无线通信技术,能够实现设备之间的近距离通讯。在数字社区建设中&#xf…

第一讲_HarmonyOS应用开发环境准备

HarmonyOS应用开发环境准备 1. 知识储备2. 环境搭建2.1 安装node.js2.2 配置node.js2.3 安装命令行工具2.4 安装DevEco Studio2.5 配置DevEco Studio 1. 知识储备 HarmonyOS提供了一套UI开发框架,即方舟开发框架(ArkUI框架)。方舟开发框架可…

#开发环境篇:HBuilderX自定义括号颜色激活时list和tab的背景色

Settings.json 配置 位置在 设置------> 源码设置里面 {"beautify.useProjectConfigFile": true,"browsers.config": {"Chrome.path": "C:/Program Files/Google/Chrome/Application/chrome.exe"},"defaultFomat.vue":…

判断SD-WAN是否适用于你的企业的关键问题

企业网络的演进已经将SD-WAN(软件定义广域网)推到了风口浪尖。不论企业规模如何,它们都在寻求适应不断变化的网络环境的最佳解决方案。尽管SD-WAN的部署带来了多方面的优势,但企业在决定是否采用SD-WAN时需要考虑一些关键问题。 关…

SafeTpack—基于AURIX 2G的功能安全目标解决方案

产品概述 SafeTpack是专门针对于英飞凌AURIX 2G系列芯片的功能安全解决方案,由英飞凌下属子公司Hitex按照ISO26262-10作为独立于环境的安全要素(SEOOC)研发。根据ISO26262-5中的要求,系统需要根据不同ASIL等级的要求,针…

目标文献分析方法

如何正确选题? 不仅仅是题目,而是研究工作的起步选题步骤? 发现问题选择方向调查研究分析论证确定选题 中国知网 深度学习方向词 1检索:深度学习 医疗影像 1 发表时间要最新 2 显示50个,全选 3 导出文献格式Ref 4 导…

JVM垃圾回收机制及思维导图

一、Java垃圾回收机制 在java中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在JVM中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内…

官宣!Meta正在训练Llama 3,将继续开源

1月19日,全球社交、科技巨头Meta的联合创始人兼首席执行官-Zuck(扎克伯格)在is宣布,正在训练Llama 3并且以负责任地方式继续开源。 Zuck表示,预计到2024年底,Meta将拥有350,000块H100,如果算上…

JAVA SECS发送Report C#处理SECS Report SECS发送事件资料大全 S6F11 建立通讯S1F13

发送S6F11非常简单,只需5~6行代码,最核心是代码清晰易懂。 任何人都可以一看就能上手,如果说用代码可读性作为不可替代性的壁垒就无话可说了。 private void buttonS6F11_Click(object sender, EventArgs e) {int nTransaction 0;// 数据部…

Java中创建List接口、ArrayList类和LinkedList类的常用方法(一)

List接口 要了解List接口,就不得不说起Java的集合框架。 (该图来自菜鸟教程) Collection接口和Map接口 Java 集合框架主要包括两种类型的容器,集合Collection和图Map。 Collection接口代表了单列集合,它包含了一组…

画面滤镜特效SDK,企业级视频处理技术方案

视频处理技术日新月异,对于企业而言,如何快速、高效地处理视频内容,增加其观赏性和吸引力,成为了一项重要的挑战。美摄科技画面滤镜特效SDK,作为一款全面的视频处理工具,为企业提供了一种高效、灵活的视频处…

元宇宙:智慧城市建设的未来引擎与价值之源

在21世纪的技术大潮中,元宇宙的出现无疑是一场革命,其独特的概念与价值已经引发了全球范围内的关注。 作为新兴科技的前沿,元宇宙为智慧城市建设带来了无限的可能性和价值,有望成为未来城市发展的核心动力。 元宇宙,这…