技术标签: Excel
需要在用户窗体中加入按钮的,则需要打开“工具箱”
插入控件按钮
(1)、首先在sheet中添加一个按钮,来显示用户窗体,查看效果
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
鼠标单击CommandButton1出现如下窗口,这是未对窗口进行任何代码编写的效果。
(2)、在用户窗体中编写代码,打开编写界面
两个主要函数
Private Sub UserForm_Initialize()
code
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
code
End Sub
UserForm_Initialize是窗体初始化函数,对窗体的高度宽度等一系列初始化操作区域。只要使用UserForm1.Show就会调用这一函数。
UserForm_QueryClose是窗体点右上角那个x之后,将调用该函数。
(3)、实际应用
将实现的功能:
读取所有sheet的名字
显示在窗体上
通过在窗体上选择想要的sheet的名字,输出打印到sheet1的单元格A1中。
将按钮修改名称为“确定”,点击确定即为确定选择内容,点击右上角的x,即为放弃修改。
最终效果:
Private Sub 确定_Click()
Sheet1.Range("A1:Z1").ClearContents
Call Process
Unload UserForm1
End Sub
Private Sub Process()
Dim TNum As Integer
Dim flag As Integer
flag = 0
TNum = 0
On Error Resume Next
For i = 0 To UserForm1.Controls.Count - 1
If UserForm1.Controls(i) = True Then
Sheet1.Cells(1, 1) = Sheet1.Cells(1, 1) & " " & UserForm1.Controls(i).Caption
End If
Next
End Sub
Private Sub UserForm_Initialize()
Dim sheetNameArr() As String
Dim sheetnum As Integer
For Each sht In Worksheets
sheetnum = sheetnum + 1
Next
ReDim sheetNameArr(0 To sheetnum)
sheetnum = 0
For Each sht In Worksheets
sheetNameArr(sheetnum) = sht.Name
sheetnum = sheetnum + 1
Next
sheetnum = UBound(sheetNameArr) + 1
'Fix是向下取整
counts = Fix(sheetnum / 10) + 1
'设置窗体高度和宽度
UserForm1.Width = 150 * counts '每增加1列宽度加150。
If sheetnum < 11 Then UserForm1.Height = 20 * sheetnum + 50
If sheetnum > 10 Then UserForm1.Height = 250
'设置按钮的高度宽度以及相对窗体的位置
UserForm1.确定.Width = 100
UserForm1.确定.Height = 25
UserForm1.确定.Top = UserForm1.Height - 50
UserForm1.确定.Left = (UserForm1.Width - 100) / 2
For X = 1 To counts
Y = 10 * X '每列显示10个控件
If X = 1 Then '开始第1列显示
Start = 2
Ends = 11
Else '换列显示
Start = Ends + 1
Ends = Y + 1
End If
If Ends > sheetnum Then '防止溢出
Ends = sheetnum
End If
For i = Start To Ends '循环生成控件
Set ChkBox = UserForm1.Controls.Add("Forms.CheckBox.1", "Chk" & Str(i))
If i > 11 Then
tops = 2 + 20 * (i - Y + 8) '换列后的控件高度坐标
Else
tops = 2 + 20 * (i - 2)
End If
ChkBox.Top = tops
ChkBox.Height = 25 '控件的高度
ChkBox.Width = 200 '控件的宽度
ChkBox.Left = 20 + 150 * (X - 1) '220 换列后的横坐标
ChkBox.Caption = sheetNameArr(i - 2) '控件显示的标题
Set ChkBox = Nothing
Next
Next
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
End Sub
https://download.csdn.net/download/qq_39629993/12693907
文章浏览阅读712次。最近单位要求本渣学习服务器脚本编写完成定点市级机构下发的数据库表导入项目服务器数据库,按工作顺序就先打算在自己笔记本电脑上通过虚拟机来模拟生产环境,部署虚拟环境后安装Linux版本Oracle19c数据库。经过数天研究终完成安装,记录如下。安装准备:1、虚拟软件 Oracle VM VirtualBox2、镜像 CentOS-7-x86_64-Minimal-2009.iso3、Xshell 7.04、Xftp 7.05、Xmanager Enterprise 56、LINUX._debian 安装 oracle19c
文章浏览阅读2k次,点赞2次,收藏20次。Halcon分类器示例自我理解看了很多网上的例子,总有一种纸上得来终觉浅,绝知此事要躬行的感觉。说干就干,将Halcon自带分类器例子classify_metal_parts.hdev按照自己的理解重新写一遍,示例中的分类器是MLP(多层感知机),我将它改变为GMM(高斯混合模型)。希望可以帮助刚入门的同学学习理解,大神请绕路吧,当然也喜欢各位看官帮我找出不足之处,共同进步。谢谢!分类效果如图..._训练高斯混合模型分类器
文章浏览阅读819次。使用Jacob转换office文件,Jacob.dll文件需要放到jdk\bin目录下Jacob.dll文件下载地址https://download.csdn.net/download/zss0101/10546500package com.zss.util;import java.io.File;import com.jacob.activeX.ActiveXComponent;..._"officetopdf.wordtopdf(\"d:\\\\1234.doc\", \"d:\\\\1234.pdf\");"
文章浏览阅读1k次,点赞30次,收藏30次。上面的例子我们已经了一个简易的消息队列。我们继续思考一个现实的场景,假定这些是一些游戏商品,它需要添加"延迟销售"特性,在未来某个时候才可以开始处理这些游戏商品数据。那么要实现这个延迟的特性,我们需要修改现有队列的实现。在消息数据的信息中包含延迟处理消息的执行时间,如果工作进程发现消息的执行时间还没到,那么它将会在短暂的等待之后重新把消息数据推入队列中。(延迟发送消息)_redistemplate convertandsend方法实现队列
文章浏览阅读287次,点赞5次,收藏5次。java基础篇
文章浏览阅读298次。linux扩容根目录与/home_双系统linux扩容
文章浏览阅读388次。定义RabbitMQ类import jsonimport osimport sysimport pikafrom Data import Datafrom MongoDB import MongoDBfrom constants import *class RabbitMQ: def __init__(self, queue_name): """ 初始化队列对象 :param queue_name: 队列名称 "_python pika 通过主机名称来访问mq
文章浏览阅读568次。**openpyxl简介**openpyxl是一个开源项目,openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到其它库(如:xlrd、xlwt等),这是openpyxl比较其他模块的不足之处。openpyxl是一款比较综合的工具,不仅能够同时读取和修改Excel文档,而且可以对Excel文件内单元格进行详细设置,包括单元格样式等内容,甚至还支持图表插入、打印设置等内容,使用openpyxl可以读写xltm, xltx, xlsm, xls_在 python 中可以通過 openpyxl 套件來很好的操作 excel 讀寫
文章浏览阅读1.4w次,点赞7次,收藏56次。Unity自带的两种写法:①物体的位置是否在某个区域内Vector3 pos = someRenderer.transform.position;Bounds bounds = myBoxCollider.bounds;bool rendererIsInsideTheBox = bounds.Contains(pos);②物体的矩形与区域的矩形是否交叉Bounds rendererBo..._unity判断物体在范围内
文章浏览阅读295次,点赞6次,收藏4次。报错:Unable to find image 'openexplorer/ai_toolchain_centos_7_xj3:v2.3.3' locally。报错: ./best_line_follower_model_xy.pth cannot be opened。可以看到生成的文件 best_line_follower_model_xy.pth。报错:Module onnx is not installed!安装onox,onnxruntime。这是由于没有文件夹的写权限。
文章浏览阅读393次,点赞10次,收藏8次。MDB-RS232测试NAYAX的VPOS非现金MDB协议刷卡器注意事项
文章浏览阅读2.5k次。作者 |土豆变成泥来源 |知秋路(ID:gh_4a538bd95663)【导读】作为谷歌tensorflow某项目的Contributor,已经迅速弃坑转向Pytorch。目前Ten..._pytorch与tensorflow