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

VBA智慧办公9——图例控件教程

        如图,利用VBA进行可视化交互界面的设计,在界面中我们用到了label,button,text,title等多个工具,在进行框图效果的逐一实现后可进行相应的操作和效果实现。

        VBA(Visual Basic for Applications)是一种用于编写Windows应用程序的编程语言,可以用于创建可视化交互界面。以下是一些步骤,可以帮助您使用VBA创建可视化交互界面:

  1. 创建一个新的VBA项目:打开Visual Basic for Applications(VBA)编辑器,创建一个新的VBA项目。
  2. 添加一个新的模块:在项目中创建一个新的模块,用于存储可视化交互界面的代码。
  3. 编写可视化交互界面的代码:在模块中编写可视化交互界面的代码,例如使用VBA的图形库创建图形界面。
  4. 添加交互事件:在可视化交互界面中添加交互事件,例如单击按钮时显示一个消息框。
  5. 添加用户输入:在可视化交互界面中添加用户输入,例如使用VBA的文本框控件接收用户输入。
  6. 添加用户输出:在可视化交互界面中添加用户输出,例如使用VBA的文本框控件显示用户输出。
  7. 添加用户交互:在可视化交互界面中添加用户交互,例如使用VBA的按钮控件响应用户单击。
  8. 调试和测试:在编写完代码后,使用VBA的调试器和测试器调试和测试可视化交互界面,确保其正常运行。
  9. 发布和部署:将可视化交互界面发布到Windows应用程序商店或其他目标平台上,以便用户可以下载和使用它。

以上是一些基本的步骤,但是VBA还提供了许多其他功能和控件,可以用于创建更复杂的可视化交互界面。

        以下图案例为操作相关举例:

        点击上方工具箱

        仔细研读工具箱,共分为两行,第一行从左往右分别为:选定对象、标签、文本框、复合框、列表框、复选框、选项按钮、切换按钮;第二行从左往右分别为:框架、命令按钮、TabStrip、多页、滚动条、旋转按钮、图像、RefEdit。

        分析下图表格:在复选框内进行密码的输入,再点击确定后实现密码验证判断是否正确。

Private Sub loginCmd_Click()
If UserForm1.tpassword = "" Then
MsgBox "登录密码不能为空", 48, "警告"
Exit Sub
End If
If Sheet13.Range("c3").Value = UserForm1.tpassword.Text Then
Unload Me
Sheet7.Visible = xlSheetVisible
MsgBox "恭喜,密码正确,欢迎您使用本系统", 64, "登录成功"
'Sheet7.Activate
UserForm2.ShowApplication.Visible = True
Else
MsgBox "对不起,请您核对密码是否正确,请与管理员联系", 32, "警告"
Exit Sub
End If
End Sub

        这段代码是一个简单的用户登录程序,当用户点击登录按钮时,程序会检查用户输入的密码是否为空,如果为空则会弹出一个警告框,否则会将用户的密码与表格中的密码进行比较,如果匹配则会弹出一个登录成功的消息框,否则会弹出一个登录失败的消息框。

Private Sub UserForm_Initialize()hWnd = FindWindow(vbNullString, Me.Caption)SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE '置顶Application.Visible = Falsetpassword.SetFocus
End Sub

        这段代码定义了一个名为UserForm的窗体,并在窗体的Initialize事件中初始化了窗体的属性,包括窗体的句柄、窗体的位置、窗体的大小等。


Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST = -1
Private Const SWP_NOMOVE = 2
Private Const SWP_NOSIZE = 1
Dim hWnd As Long

        这段代码定义了一个名为FindWindow的函数,用于在Windows操作系统中查找窗口句柄。该函数接受两个参数,第一个参数是窗口类名,第二个参数是窗口名称。该函数返回窗口句柄的值,如果找不到窗口则返回-1。

        该函数使用了PtrSafe关键字来声明该函数的返回值类型为Long类型,以便在函数内部进行位运算。

        该函数还定义了一个名为SetWindowPos的函数,用于设置窗口的位置和大小。该函数接受五个参数,分别是窗口句柄、窗口插入位置、X坐标、Y坐标和宽度和高度。如果窗口不在屏幕上,则该函数将设置窗口为最顶层窗口,并将其位置设置为屏幕左上角。如果窗口大小不能被改变,则该函数将设置窗口大小为最大宽度和高度。

        该函数使用了常量HWND_TOPMOST和SWP_NOMOVE来表示最顶层窗口和不允许移动窗口的标志。

        该函数还定义了一个名为hWnd的变量,用于存储窗口句柄的值。

        以上,即可完成基于VBA的登陆初始化界面的初步过程。

相关文章:

VBA智慧办公9——图例控件教程

如图,利用VBA进行可视化交互界面的设计,在界面中我们用到了label,button,text,title等多个工具,在进行框图效果的逐一实现后可进行相应的操作和效果实现。 VBA(Visual Basic for Applications&a…...

Presto VS Spark

环境配置 5个节点,每个节点10G内存。 测试SQL,每个执行3次,求平均,对比计算性能。 版本信息 Spark:2.3.1Presto: 0.208 10亿量级查询性能对别 Spark: spark-sql> select sex,count(1) from conta…...

为什么我们能判断声音的远近

想象一下,当我们走在路上时,听到了头顶的鸟儿在树梢间的叫声,即使无法透过浓密的树叶看见它,也可以大致知道鸟儿的距离。此时身后传来由远到近自行车铃铛声,我们并不需要回过头去看,便为它让开了道路。这些…...

那些关于DIP器件不得不说的坑

了解什么是DIP DIP就是插件,采用这种封装方式的芯片有两排引脚,可以直接焊在有DIP结构的芯片插座上或焊在有相同焊孔数的焊位中。其特点是可以很方便地实现PCB板的穿孔焊接,和主板有很好的兼容性,但是由于其封装面积和厚度都比较…...

论文笔记:基于U-Net深度学习网络的地震数据断层检测

0 论文简介 论文:基于U-Net深度学习网络的地震数据断层检测 发表:2021年发表在石油地球物理勘探 1 问题分析和主要解决思路 问题:断层智能识别,就是如何利用人工智能技术识别出断层。 解决思路:结合U-N…...

kafka单节点快速搭建

1.搭建使用centos7主机,关闭防火墙和selinux服务 2.创建kafka存放目录 mkdir /etc/kafka 3.从kafka官网下载安装包 我这里下载了3.3.1版本的kafka,放到kafka目录中 下载地址:Apache Kafka 4.解压安装包并更改名称 tar -zxvf /etc/kaf…...

【MySQL】(6)常用函数

文章目录 日期函数获取日期日期计算 字符串函数charsetconcatlengthsubstringreplaceinstrstrcmpltrim, rtrim, trim 数学函数absbin, hexconvceiling, floorrandformatmod 其他函数user() 查询当前用户密码加密md5()password() database() 查看当前数据库ifnull() 日期函数 函…...

Linux学习 Day1

注意: 以下内容均为本人初学阶段学习的内容记录,所以不要指望当成查漏补缺的字典使用。 目录 1. ls指令 2. pwd指令 3. cd指令 4. touch指令 5. mkdir指令(重要) 6. rmdir指令 && rm 指令(重要&#xff…...

Hibernate中的一对多和多对多关系

Hibernate的一对多和多对多 Hibernate是一个优秀的ORM框架,它简化了Java应用程序与关系型数据库之间的数据访问。在Hibernate中,我们可以使用一对多和多对多的关系来处理复杂的数据模型。本文将介绍Hibernate中的一对多和多对多,包括配置和操…...

Linux系统之部署Samba服务

Linux系统之部署Samba服务 一、Samba服务介绍1.Samba服务简介2.NFS和CIFS简介3.Smaba服务相关包4.samba监听端口4.samba相关工具及命令 二、环境规划介绍1.环境规划2.本次实践介绍 三、Samba服务端配置1.检查yum仓库2.安装smaba相关软件包3.创建共享目录4.设置共享目录权限5.新…...

回顾产业互联网的发展历程,技术的支撑是必不可少的

从以新零售、全真互联网为代表的产业互联网的概念诞生的那一天开始,互联网的玩家们就一直都在寻找着它们的下一站。尽管在这个过程当中,遭遇到了很多的困难,走过了很多的弯路,但是,产业互联网的大方向,却始…...

关于gas费优化问题

关于gas费优化问题 首先我们先来看一下这段代码 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract GasGolf{uint public total;//[1,2,3,4,5,100]function sum(uint[] memory nums) external{for(uint i 0;i<nums.length;i1){bool isEven nums[i] % 2…...

Linux——中断和时间管理(中)

目录 驱动中的中断处理 中断下半部 软中断 tasklet 工作队列 驱动中的中断处理 通过上一节的分析不难发现&#xff0c;要在驱动中支持中断&#xff0c;则需要构造一个 struct irqaction的结构对象&#xff0c;并根据IRQ 号加入到对应的链表中(因为 irq_des 已经在内核初始…...

嵌入式软件中常见的 8 种数据结构详解

目录 第一&#xff1a;数组 1、数组的应用 第二&#xff1a;链表 1、链表操作 2、链表的应用 第三&#xff1a;堆栈 1、堆栈操作 2、堆栈的应用 第四&#xff1a;队列 1、队列操作 2、队列的应用 第五&#xff1a;哈希表 1、哈希函数 2、哈希表的应用 第六&#…...

vue 修改当前路由参数并刷新界面

项目中经常用到的需求是在当前页面修改路由中的参数&#xff0c;并刷新页面。 我们只用this. r o u t e r . r e p l a c e 或者 t h i s . router.replace或者this. router.replace或者this.router.go是不行的&#xff0c;需配合下面的代码 方法一&#xff1a; this.$router.…...

视频处理之视频抽帧的python脚本

在计算机视觉研究中&#xff0c;处理视频的时候&#xff0c;往往需要将视频抽帧成图片。如果多个视频都存放在一个文件夹里&#xff0c;并且希望抽帧出来的图片&#xff0c;以一个视频对应一个文件夹的形式存放&#xff0c;可以用以下代码&#xff0c;抽帧频率可自己手动修改&a…...

【youcans 的 OpenCV 学习课】22. Haar 级联分类器

专栏地址&#xff1a;『youcans 的图像处理学习课』 文章目录&#xff1a;『youcans 的图像处理学习课 - 总目录』 【youcans 的 OpenCV 学习课】22. Haar 级联分类器 3. Haar 特征及其加速计算3.1 Haar 特征3.2 Haar 特征值的计算3.3 积分图像3.4 基于积分图像加速计算 Haar 特…...

如何避免知识盲区 《人生处处是修行》 读书笔记

如何避免知识盲区 多元化学习&#xff1a;不要只关注自己擅长的领域&#xff0c;应该尝试学习其他领域的知识&#xff0c;例如文学、艺术、科学等。 拓宽阅读&#xff1a;阅读不同领域的书籍、文章、博客等&#xff0c;可以帮助你了解更多的知识和观点。 参加培训和课程&…...

vue返回上一页自动刷新方式

再vue中&#xff0c;返回上一页时&#xff1a;如果页面是打开的状态&#xff0c;页面不会自动刷新&#xff0c;会保持着上次跳转的状态不更新&#xff1b; 原因&#xff1a;vue-router的切换不同于传统的页面切换&#xff0c;而是路由之间的切换&#xff0c;其实就是组件之间的…...

查询SERVER正在执行的SQL语句

--方法一 select * from master..sysprocesses SELECT distinct [Spid] session_Id, ecid, [Database] DB_NAME(sp.dbid), [User] nt_username, [Status] er.status, [Wait] wait_type, [Individual Query] SUBSTRING(qt.text, er.statement_start_offset / 2,…...

现代密码学--结课论文---《70年代公钥传奇》

摘要&#xff1a;在70年代之前&#xff0c;密码学主要被军方用于通信保护。密码学的主要研究也是由情报机构&#xff08;GCHQ、NSA等&#xff09;或IBM等企业运营的获得许可的实验室中进行。这时公众几乎无法获得密码学知识&#xff0c;直到由三位密码学家Hellman、Diffie和Mer…...

cf1348B phoenix and beauty(双指针滑动窗口的构造)

C 题面 Problem - 1348B - Codeforces 输出标准输出 凤凰网喜欢美丽的数组。如果一个数组中所有长度为k的子数组 的子数都有相同的总和&#xff0c;那么这个数组就是美丽的。一个数组的子数组是任何连续元素的序列。 凤凰网目前有一个数组a 的长度为n . 他想在他的数组中插入…...

一文读懂JAVA的hashCode方法:原理、实现与应用

目录 一、概述二、实现原理和重写规则三、如何重写hashCode方法3.1 Objects.hash()方法3.2 Apache HashCodeBuilder.3.3 Google Guava3.4 自定义哈希算法四、hashcode和equals的联系五、注意事项和建议5.1 注意事项5.2 建议六、总结一、概述 在Java中,每个对象都有一个hashCod…...

RocketMQ部署

一 安装mq 1.下载RocketMQ 本教程使⽤的是RocketMQ4.7.1版本&#xff0c;建议使⽤该版本进⾏之后的demo训练。 运⾏版&#xff1a;https://www.apache.org/dyn/closer.cgi?pathrocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip 源码&#xff1a;https://www.apache.org…...

43岁程序员,投了上万份简历都已读不回,只好把年龄改成40岁,这才有了面试机会,拿到了offer!...

40多岁找工作有多难&#xff1f; 一位43岁的程序员讲述了自己找工作的经历&#xff1a; 80年&#xff0c;大专&#xff0c;目前没到43周岁&#xff0c;年前被裁&#xff0c;简历上的年龄是42岁&#xff0c;两个多月投了上万份简历&#xff0c;99.5%是已读未回。后来改变策略把简…...

MySQL分区表相关知识总结

1.创建分区表&#xff1a; create table t(col11 int null, col22 …) engineinnodb partition by hash(col33) partitions 44; create table t(col11 int null, col22 …) engineinnodb partition by range(id) (partition p0 values less than (10), partition p1 values les…...

outlook邮箱pc/mac客户端下载 含最新版

新的 Outlook for Windows or mac 为 Outlook 应用带来了最新功能、智能辅助功能和新的新式简化设计。 你可以根据自己的风格定制它&#xff0c;并使用新的 Outlook for Windows/mac 执行更多操作&#xff01; 览版&#xff0c;与我们一起开始旅程&#xff0c;并帮助我们塑造新…...

缓存雪崩、缓存穿透、缓存击穿分别是什么?如何解决?

缓存中存放的大多都是热点数据&#xff0c;目的就是从缓存中获取数据&#xff0c;而不用直接访问数据库&#xff0c;从而提高查询效率 缓存雪崩 概念 指缓存在同一时间大面积失效&#xff0c;后面的请求直接访问数据库&#xff0c;导致数据库短时间内压力过大而崩溃&#xff…...

VBA实战篇学习笔记02 Err错误处理

文章目录 专题VI 错误处理课时38 常见错误类型错误代码13 :类型不匹配错误代码91: 对象变量或者with变量未设置错误代码1004: 视具体错误类型而变化 课时39 Err错误处理On Error Resume Next :Resume语句:Resume Next语句:未知错误:Exit SubOn Error Goto 0 专题VI 错误处理 课…...

【Git】拉取代码/提交代码

1.从将本地代码放入远程仓库 (如果有分支的情况) [git checkout xx切换分支后 git add . 将本地所有改动文件新增 commit之后 git push(将代码全部提交)] 分支操作 #查看分支 git branch #创建分支 git branch test #切换分支 git checkout test #修改代码 #提交代码git ad…...