VBA高级应用30例应用2:MouseMove鼠标左键按下并移动鼠标事件

news2024/12/24 8:58:43

《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中分发VBA程序,写好的程序可以升级。本套教程共三册三十个专题,本讲的内容是:VBA高级应用30例应用2:MouseMove鼠标左键按下并移动鼠标事件fddfd58c3cce89f7a80d517c399ae04c.jpeg

分享成果,随喜正能量】 海洋能接纳百川,所以深不可测,广阔无边;大地能承载万物,所以生机勃勃,气象万千;天空能包容一切,所以宽广浩瀚、虚融自在;一颗宁静而平等的心,亦能包容万物、能感化世界上最顽固的敌人、能化解世间最强烈的仇恨、能治疗人类身心的疑难杂症。可以这么说,只要我们的心能够平静与自在,天下没有难事。心的自性是活泼的、灵活的、生动的、机灵的,心灵的力量超越世间所有力量。有心量就有福报,有福报就能心安,心安才能快乐。。

应用2 在列表框内及列表框间实现数据拖放

利用VBA编程时候,我们往往会利用列表框进行选择处理,最为方便的操作是拖放数据,但是在VBA中实现拖放,是比较困难的任务。为了便于在UserForm上的两个列表框之间完成拖放操作,我专门利用这个专题给大家讲解一个利用类模块的方案,在需要的时候,只需将其插入到VBA项目中即可。这样做之后,可以大大方便我们自己的工作。

1 实现的工作原理

如果要在UserForm上的控件之间(或控件内)实现拖放,则需要以下控件事件:

1) MouseMove鼠标左键按下并移动鼠标事件

当鼠标左键按下并移动鼠标时,用户可能正在开始拖动操作。我们需要确保记住列表中当前选定的项目。我希望代码能够在两个控件之间和一个控件内进行拖放,并指示拖放将在何处进行。因此,我需要两件事:

一是记住在开始拖动时选择了哪些列表的项,代码通过在每个选定项前面添加一个字符串位来临时标记我们正在拖动的项:“>”。此字符串也在稍后利用为在移动后必须从列表中删除哪些项的标识。如果用户没有按下鼠标按钮的情况下拖动,则将从列表项中删除“>”以进行清理。

二是指示下落位置的方法,VBA不便于检测鼠标光标下的列表项。MouseMove和BeforeDropOrPaste事件确实给出了X和Y坐标,但是确定哪个项目“属于”某个Y并不容易,因为我们不知道每个项目的Y坐标。我使用的技巧是:临时将40个列表项添加到列表框中(以确保列表项使用了框的整个高度),然后将列表框的topindex设置为最后一个。这将强制列表框向下滚动,在列表框底部显示最后一项。然后列表框会得到一个新的TopIndex(实际显示在顶部的项目),这样我们现在就可以计算有多少项目适合列表框的高度。因此,我们可以计算单个项目的高度,并使用它来检测鼠标的位置。我们将在属于ListBox1的属性过程中找到执行此操作的代码。

  • 我们先来讲解一下这个事件,MouseMove 事件在用户移动鼠标时发生:

语法:Private Subobject _MouseMove( ByVal Button As fmButton,ByVal Shift As fmShiftState,ByVal X As Single,ByVal Y As Single)

参数:

Part

说明

备注

object

必填。

有效的对象名称。

Button

必填。

标识鼠标按钮状态的整数值。

Shift

必填。

指定 Shift、Ctrl 和 Alt 的状态。

X, Y

必填。

从控件的左或上边缘以磅为单位测量的水平或垂直位置。

Button 的设置是:

说明

0

未按下任何按钮。

1

已按下左键。

2

已按下右键。

3

已按下右键和左键。

4

已按下中键。

5

已按下中键和左键。

6

已按下中键和右键。

7

已按下全部三个键。

Shift 的设置是:

说明

1

已按下 Shift。

2

已按下 Ctrl。

3

已按下 Shift 和 Ctrl。

4

已按下 Alt。

5

已按下 Alt 和 Shift。

6

已按下 Alt 和 Ctrl。

7

已按下 Alt、Shift 和 Ctrl。

4f8de205bb37b621bc48d6ad2f808d8b.jpeg

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:


b98a6420d985a8c17c9ddf9b7f436f96.jpeg

f3f33c147c6f3a99cd465e1499d57413.jpeg

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

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

相关文章

【GitLab】Ubuntu 22.04 快速安装 GitLab

在 Ubuntu 22.04 上安装最新版本的 GitLab,可以按照以下步骤操作: 1. 更新系统: 在终端中执行以下命令以确保系统是最新的: sudo apt update sudo apt upgrade2. 安装依赖: 安装 GitLab 所需的依赖包: …

唯美动态个人404页面源码

源码介绍 手机端先加载静态图再缓慢加载gif动图,电脑端先加载静态图在加载mp4。提升打开速度! 源码截图 下载地址 唯美动态个人404页面源码

BUG定位---一起学习吧之测试

判断一个BUG是前端还是后端的,通常需要根据BUG的具体表现、发生的环境以及相关的技术栈来进行分析。以下是一些常用的判断方法: 错误发生的位置: 如果BUG涉及的是页面的布局、样式、交互效果等,那么很可能是前端的BUG。如果BUG与…

架构师之路--Docker的技术学习路径

Docker 的技术学习路径 一、引言 Docker 是一个开源的应用容器引擎,它可以让开发者将应用程序及其依赖包打包成一个可移植的容器,然后在任何支持 Docker 的操作系统上运行。Docker 具有轻量级、快速部署、可移植性强等优点,因此在现代软件开…

自定义你的商店 – 设计WooCommerce商店的新方法

WooCommerce 8.8即将推出,带来了一种无需代码即可创建精美商店的新方法。向“自定义你的商店”问好,这是一项全新功能,将取代“个性化你的商店”入门步骤。 自定义你的商店将利用最新的WordPress站点编辑工具以及酷炫的新Pattern Assembler …

RHCE-网络服务实验1

要求: 请给openlab搭建web网站 网站需求: 基于域名www.epenlab.com可以访问网站内容为 welcome to openlab!!!给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站,基于www.openlab.com/student 网站访问学生信息,www.openlab.com/…

简单了解C++线程库

thread类简单介绍 在C11之前,涉及到多线程问题,都是和平台相关的,比如windows和linux下各有自己的接 口,这使得代码的可移植性比较差。C11中最重要的特性就是对线程进行支持了,使得C在 并行编程时不需要依赖第三方库…

Llama模型下载

最近llama模型下载的方式又又变了,所以今天简单更新一篇文章,关于下载的,首先上官网,不管在哪里下载你都要去官网登记一下信息:https://llama.meta.com/llama2 然后会出现下面的信息登记网页: 我这里因为待…

9.windows ubuntu 子系统,centrifuge:微生物物种分类。

上次我们用了karken2和bracken进行了物种分类,这次我们使用centrifuge. Centrifuge 是一种用于快速和准确进行微生物分类和物种鉴定的软件。其主要功能包括: 快速分类和物种鉴定: Centrifuge 可以对高通量测序数据(如 metagenomic 或 RNA-Se…

Redis 教程系列之Redis 发布订阅(十五)

Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。 Redis 客户端可以订阅任意数量的频道。 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 cl…

Mac安装minio

Mac安装minio 本文介绍使用 mac 安装 MinIO。 所有软件安装优先参考官网:MinIO Object Storage for MacOS — MinIO Object Storage for MacOS #使用 brew 安装 minio brew install minio/stable/minio#找到 minio tong ~ $ brew list minio /opt/homebrew/Cella…

【深度学习|基础算法】2.AlexNet学习记录

AlexNet示例代码与解析 1、前言2、模型tips3、模型架构4、模型代码backbonetrainpredict 5、模型训练6、导出onnx模型 1、前言 AlexNet由Hinton和他的学生Alex Krizhevsky设计,模型名字来源于论文第一作者的姓名Alex。该模型以很大的优势获得了2012年ISLVRC竞赛的冠…

循环神经网络之序列模型

自回归模型 自回归模型: 只与x 有关 ,对自己执行回归隐变量自回归:与X 和过去观测总结h 都有关 案例 %matplotlib inline import torch from torch import nn from d2l import torch as d2lT 1000 # 总共产生1000个点 time torch.aran…

【深度学习基础(4)】pytorch 里的log_softmax, nll_loss, cross_entropy的关系

一、常用的函数有: log_softmax,nll_loss, cross_entropy 1.log_softmax log_softmax就是log和softmax合并在一起执行,log_softmaxlogsoftmax 2. nll_loss nll_loss函数全称是negative log likelihood loss, 函数表达式为:f(x,class)−x[…

备考ICA----Istio实验11---为多个主机配置TLS Istio Ingress Gateway实验

备考ICA----Istio实验11—为多个主机配置TLS Istio Ingress Gateway实验 1. 部署应用 kubectl apply -f istio/samples/helloworld/helloworld.yaml -l servicehelloworld kubectl apply -f istio/samples/helloworld/helloworld.yaml -l versionv12. 证书准备 接上一个实验…

Day23:事务管理、显示评论、添加评论

事务管理 事务的定义 什么是事务 事务是由N步数据库操作序列组成的逻辑执行单元,这系列操作要么全执行,要么全放弃执行。 事务的特性(ACID) 原子性(Atomicity):事务是应用中不可再分的最小执行体(事务中部分执行失败就会回滚 。一致性(C…

开源大数据集群部署(十八)Hive 安装部署

作者:櫰木 1 创建hive Kerberos主体 bash /root/bigdata/getkeytabs.sh /etc/security/keytab/hive.keytab hive2 安装 在hd1.dtstack.com主机root权限下操作: 解压包 [roothd3.dtstack.com software]# tar -zxvf apache-hive-3.1.2-bin.tar.gz -C …

树与二叉树的应用试题解析

01.在有n个叶结点的哈夫曼树中,非叶结点的总数是( A ). A. n-1 B. n C. 2n-1 D.2n 02.给定整数集合{3,5,6,9,12},与之对应的哈夫曼树是( D…

设计模式——行为型——策略模式Strategy

Q:策略模式的特点 A: 具体算法从具体的业务方法中独立出来策略模式是同行为的不同实现 Q:什么时候使用策略模式 A:多个if-else使用策略模式 收费对象类 public class CashContext {private CashStrategy cashStrategy;public…

iphoneX系统的参数

1. 2. 3. 4. 5.相关的网址信息 Apple iPhone X 規格、价格和评论 | Kalvo Apple iPhone X 規格、价格和评论 | Kalvo