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

2024-03-28 07:12

本文主要是介绍VBA高级应用30例应用2:MouseMove鼠标左键按下并移动鼠标事件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《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

这篇关于VBA高级应用30例应用2:MouseMove鼠标左键按下并移动鼠标事件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/854847

相关文章

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

Python循环缓冲区的应用详解

《Python循环缓冲区的应用详解》循环缓冲区是一个线性缓冲区,逻辑上被视为一个循环的结构,本文主要为大家介绍了Python中循环缓冲区的相关应用,有兴趣的小伙伴可以了解一下... 目录什么是循环缓冲区循环缓冲区的结构python中的循环缓冲区实现运行循环缓冲区循环缓冲区的优势应用案例Python中的实现库

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和

python中time模块的常用方法及应用详解

《python中time模块的常用方法及应用详解》在Python开发中,时间处理是绕不开的刚需场景,从性能计时到定时任务,从日志记录到数据同步,时间模块始终是开发者最得力的工具之一,本文将通过真实案例... 目录一、时间基石:time.time()典型场景:程序性能分析进阶技巧:结合上下文管理器实现自动计时

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

kotlin中的行为组件及高级用法

《kotlin中的行为组件及高级用法》Jetpack中的四大行为组件:WorkManager、DataBinding、Coroutines和Lifecycle,分别解决了后台任务调度、数据驱动UI、异... 目录WorkManager工作原理最佳实践Data Binding工作原理进阶技巧Coroutine

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短