office VBA 用户窗体 控件 单元格 参数的用法与注解

											目   录
编号名称编号名称编号名称编号名称编号名称
1错误类2全局变量3开关4弹窗5换行
6调试打印7引用8延时9日志窗口显示(全局文本)10调用外部软件
11按钮状态改变12调用参数13路径选择14日志导出15excle文件格式转换
16VBA隐藏表格17改变窗体外观18更改Sheet名19对文件夹中多个文件进行操作20合并单元格
21插入一行单元格22在指定单元格内输入字符23调整行高和列宽24跳转到该列最后一个数值25获取当前单元格所在的行号和列号
26格式刷(公式复用)27筛选28查找替换29单元格颜色30字符居中
31添加公式32复制某个单元格33单元格引用34单元格边框35复选框执行
36取消(退出软件)37If Else38For Next39While wend40Do Loop
41附 录:42434445
											 代   码

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
1、错误类
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

错误类:
On Error Resume Next '忽略运行过程中可能出现的错误(添加在函数的前面)

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
2、设置全局变量
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

设置全局变量:
public i '将i设置成全局变量
sub 全局变量()
end sub

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳、
3、开关
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

开关:
	public i '将i设置成全局变量
	sub 点击一下开再点击一下关()
	if i = 0 then
		'编写需要的代码满足何种条件后将i置为1
		i = 1
	else
		'编写需要的代码满足何种条件后将i置为0
		i = 0
	end if
	end sub

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
4、弹窗
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

弹窗:
sub 弹窗()
	MsgBox("这里编写弹出的提示框显示内容")
end sub

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
5、换行
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

换行显示:
& chr(10)
长代码连写:
 _
If i = 1 _
Then
i = 0
End If

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
6、调试打印
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

打印参数值:
Debug.print *'*为变量、引用值、固定字符等

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
7、引用
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

引用:
x = 1
msgbox("这是要引用值x显示的地方") & x’文本后引用
MsgBox ("文件执行" & x & "日志已导出到")'这是中间引用

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
8、延时
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

延时:
Application.Wait Now + TimeValue("00:00:1")'最低延时为1秒

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
9、日志窗口显示(全局文本)
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

日志:
public x '将x设置成全局日志内容
sub 日志()
日志.text = "这是日志类容"'固定日志(方法1)
全局日志.text = x + "这是新日志类容"'x为之前日志类容(方法2)
x = 全局日志.text

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
10、调用外部软件
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

调用外部软件:
sub 调用外部软件()
On Error Resume Next '忽略运行过程中可能出现的错误
Set oShell = CreateObject("WSCript.shell")
ret = oShell.Run(Application.ActiveWorkbook.Path & "\调用软件名称.exe " & " 传入的参数", 0, True) 
Set oShell = Nothing
end sub

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
11、按钮状态改变
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

按钮控件状态改变:
'总窗口名称为该用户窗体最外层的背景窗口
总窗口名称.Controls("按钮控件名称").Value = False'False为关
总窗口名称.Controls("按钮控件名称").Value = True'True为开
判断复选框是否被选中:
if 总窗口名称.Controls("按钮控件名称").Value = True Then'True为选中
'这里写被选中后要执行的代码
else
'这里写没被选中时要执行的代码
End if

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
12、调用参数
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

调用参数:
调用.text = "在对应窗口显示这一段字符"'在文本窗口显示文字(调用为控件名称)

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
13、路径选择
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

路径选择:
public x '将x设置成全局路径变量
Private Sub 路径选择_Click()
Set objFD = Application.FileDialog(msoFileDialogFolderPicker)
With objFD
If .Show = -1 Then
' 如果单击了确定按钮,则问将选取的路径保存在变量中
x = .SelectedItems(1)
End If
End With
Debug.Print x
文件路径.Text = x'输出文件路径日志
End Sub

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
14、日志导出
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

导出日志txt:
public x '将x设置成全局路径变量
public i '将i设置成全局日志变量
Private Sub 日志导出_Click()
Dim Fso, Fil
日志导出.Caption = "日志已导出"'将按钮文字变成日志已导出
日志导出.Enabled = False'日志导出按钮不可编辑
Application.Wait Now + TimeValue("00:00:5")'按钮文字改变延时
myPath1 = "" & x  '导出的日志所在的文件夹路径
Set Fso = CreateObject("Scripting.FileSystemObject") '访问系统文件
Set Fil = Fso.OpenTextFile(myPath2, 8, 1) '打开文本文件
    Fil.Write i '将i中所含所有字符写入文本
    Fil.WriteBlankLines (5) '换5行
Fil.Close '关闭文本文档
日志导出.Caption = "导出日志"'将日志导出按钮文字变成导出日志
日志导出.Enabled = True'日志导出按钮不可编辑
End Sub

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
15、excle文件格式转换
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

Private Sub CSV转xlsx_Click() 'CSV转Xlsx
     Dim sDir As String
     Dim curdir As String
     curdir = "设置文件路径" '找到需要转换的文件路径
     sDir = Dir(curdir & "\*.csv")'显示文件列表
     While Len(sDir)'循环当前文件夹中文件个数
     Workbooks.Open FileName:=curdir & "\" & sDir'打开当前文件夹中符合条件的文件
     Dim temp As String'(这个定义需要在循环内部)
     temp = Left(sDir, Len(sDir) - 4)
     'Left函数从给定输入字符串的左侧返回指定数量的字符
     '语法:Left(String, Length)
     'String - 必需的参数。 输入从左侧返回指定数量的字符的字符串
     'Length - 必需的参数。 一个整数,指定要返回的字符数
     ActiveWorkbook.SaveAs FileName:=curdir & "\" & temp & ".xlsx", _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False'另存为 & temp & .xlsx类型的文件
        ActiveWorkbook.Save'保存当前显示文件
        ActiveWindow.Close'关闭当前显示文件
     sDir = Dir
     Wend
End If
End Sub

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
16、自动打开excle中用户窗体和隐藏VBA中excle表格(只显示用户窗体)
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻
样例

自动打开excle中用户窗体和隐藏VBA中excle表格(只显示用户窗体)
在Microsoft excle 对象中的ThisWorkbook中
Private Sub WORKBOOK_OPEN()
用户主窗体名称.Show'自动打开用户窗体
Application.Visible = False '隐藏EXCEL主窗口
End Sub

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
17、改变窗体外观(背景色,是否隐藏等)
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

改变窗体外观(背景色,是否隐藏等)
Private Sub 改变外观_Click() 
    窗体控件1.BackStyle = fmBackStyleOpaque '背景显示白色
    窗体控件2.BackStyle = fmBackStyleTransparent '背景显示为透明
    窗体控件1路径显示.BackStyle = fmBackStyleOpaque '背景显示白色
    窗体控件2路径显示.BackStyle = fmBackStyleTransparent '背景显示为透明
    窗体控件1路径显示.SpecialEffect = fmSpecialEffectSunken '路径显示背景框
    窗体控件2路径显示.SpecialEffect = fmSpecialEffectFlat '路径不显示背景框
    窗体控件1.Enabled = True '可以点击操作
    窗体控件2.Enabled = False '不可点击操作
End Sub

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
18、更改Sheet名
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

更改Sheet名
Private Sub 更改Sheet名_Click() 
Dim sDir As String
Dim curdir As String
curdir = "" & sPath1 '找到需要转换的文件路径
If Dir(curdir & "\*.csv") = "" Then'判断文件后缀
sDir = Dir(curdir & "\*.xlsx")
Else
sDir = Dir(curdir & "\*.csv")
End If
While Len(sDir)'遍历文件后依次操作
Workbooks.Open FileName:=curdir & "\" & sDir
Dim temp As String
temp = Left(sDir, Len(sDir) - 4)
ActiveWorkbook.SaveAs FileName:=curdir & "\" & temp & ".xlsx", _
    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    Sheets(1).Name = "Sheet1" '修改文件表的Sheet名称为Sheet1
    ActiveWorkbook.Save
    ActiveWindow.Close
sDir = Dir
Wend
End If
End Sub

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
19、对文件夹中多个文件进行操作
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

Dim sPath1 As String'定义的sPath1为全局变量
Private Sub 多文件操作_Click()
        Dim aList() As String
            curdir1 = "" & sPath1 '文件夹目录
            sDir1 = Dir(curdir1 & "\*.xlsx") '不同后缀记得替换:(csv、xlsx、xlsm)
            '可以将sDir1增加判断对不同类型的文件进行操作。
        Do While sDir1 <> 'sDir1不等于空
        If sDir1 = "" Then '用来判断文件夹中是否还存在文件,如果没有文件则跳出循环
        MsgBox ("当前文件夹中没有符合筛选条件的文件,请确认路径是否正确")
        Exit Sub'退出当前函数
        End If
                ReDim Preserve aList(0 To i) As String  '重定义数组大小
                aList(i) = sDir1 '列表a
                Workbooks.Open FileName:=curdir1 & "\" & aList(i) '打开文件
                Application.WindowState = xlMaximized '窗口最大化
                '在这里添加操作代码,例如增、删、改、查等
				ActiveWorkbook.Save
                ActiveWindow.Close
		i = i + 1
		sDir = Dir()'查找下一个目录
		Loop
	end Sub

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
20、单元格格式设置(合并单元格)
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

 Range("A1:B1").Select'单元格A1到B1
        With Selection
            .HorizontalAlignment = xlCenter '水平对齐
            .VerticalAlignment = xlCenter '垂直对齐
            .WrapText = False '文字换行(居中为True)
            .Orientation = 0 '方向(文本方向)
            .AddIndent = False '添加缩进
            .IndentLevel = 0 '缩进量(范围0-15)
            .ShrinkToFit = False '收缩到合适(自动调整)
            .ReadingOrder = xlContext '读写次序(从左往右写还是从右往左写)
            .MergeCells = False '合并单元格
        End With
        Selection.Merge'选择并合并

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
21、插入一行单元格
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

 Rows("1:1").Select'插入首行
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
22、在指定单元格内输入字符
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

Range("A1").Select
ActiveCell.FormulaR1C1 = "这是需要输入的字符"

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
23、调整行高和列宽
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

Rows("1:1").Select'调整第一行行高
Selection.RowHeight = 90'行高90
Columns("Z:Z").ColumnWidth = 7 '设置Z列单元格列宽为7

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
24、跳转到该列最后一个数值
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

Range("A1").Select'从A1开始
Selection.End(xlDown).Select '到有字符的最后一行,相当于按住ctlr+shift+↓
x = Selection.Row() '获取当前选择框所在的行号
y = Selection.Column() '获取当前选择框所在的列号

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
25、获取当前单元格所在的行号和列号
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

x = Selection.Row() '获取当前选择框所在的行号
y = Selection.Column() '获取当前选择框所在的列号

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
26、格式刷(公式快速复用)
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

该方法一般需要配合获取当前单元格所在的行号和列号使用
先找有数据的单元格,使用Selection.End(xlDown).Select '到有字符的最后一行,相当于按住ctlr+shift+↓方法跳转到最后一行,然后使用x = Selection.Row() '获取当前选择框所在的行号, y = Selection.Column() '获取当前选择框所在的列号。然后让单元格在需要写入公式的最后一行中写入1(1没有任何意义,只是为了让该单元格有字符)其他需要同样操作的单元格类似,然后使用下面的代码,将该列所需要复用的公式进行复用。
公式复用演示

Range("I2").Select
ActiveCell.FormulaR1C1 = "=RC[-6]-RC[-4]" '以当前单元格(I2)为坐标,用负轴(-6)单元格减去(-4)单元格(从后往前数6个格子和4个格子)
Range("J2").Select
ActiveCell.FormulaR1C1 = "= RC[-7]-RC[-4]" '以当前单元格(J2)为坐标,用负轴(-7)单元格减去(-4)单元格(从后往前数7个格子和4个格子)
Range("K2").Select
ActiveCell.FormulaR1C1 = "=RC[-8]-RC[-4]"
Range("K3").Select
Range("I2:K2").Select '选中I2,J2,K2单元格(三个连在一起全选)
Range(Selection, Selection.End(xlDown)).Select '将上面的三个全选单元格选中后按住ctlr+shift+↓到有数值的最后一行(之前写的3个1)
Selection.FillDown '按ctrl+D实现前面三个单元格同样的公式操作

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
27、筛选
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

添加筛选
            Range("A1:K1").Select '选中A1到K1
            Selection.AutoFilter '增加筛选功能
筛选条件
            Columns("E:E").Select '选择E列
            '单项筛选
            ActiveSheet.Range("$A$1:$K$" & x).AutoFilter Field:=5, Criteria1:="=" '选择5列进行筛选,筛选值为空
            '多项筛选
            ActiveSheet.Range("$A$1:$K$" & x).AutoFilter Field:=5, Criteria1:="=null", _
              Operator:=xlOr, Criteria2:="=" '选择第5列筛选值为null(Criteria1:="=null")和空白值(Criteria2:="=" )
            e = ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1 '返回筛选后的符合条件的个数

取消筛选(全选显示)
 			Columns("G:G").Select
            ActiveSheet.Range("$A$1:$K$" & x).AutoFilter Field:=7 '全选第7列筛选(取消第7列的筛选)

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
28、查找替换
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

Cells.Replace What:="null", Replacement:="", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False '查找并替换null值为空白(不写入任何字符)

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
29、单元格颜色
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

去除颜色
            Columns("A:K").Select'选择A列到K列
            With Selection.Interior '循环将填充颜色去除
                .Pattern = xlNone
            End With

添加颜色
Range(“L3:P3”).Select’L3到P3这些单元格添加绿色
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.799981688894314
'07***为浅绿,0.599993896298105中浅绿,0.399975585192419浓绿
.PatternTintAndShade = 0
End With

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
30、单元格设置(字符居中)
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

'这段代码是录制的,单元格格式参数如果懒得一一百度就使用录制
Columns("A:K").Select
            Selection.Borders(xlDiagonalDown).LineStyle = xlNone'选择。边框(xl对角线向下)。线条样式 = xlNone
            Selection.Borders(xlDiagonalUp).LineStyle = xlNone'选择。边框(xl对角线向上)。线条样式 = xlNone
            With Selection.Borders(xlEdgeLeft)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With Selection.Borders(xlEdgeTop)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With Selection.Borders(xlEdgeBottom)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With Selection.Borders(xlEdgeRight)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With Selection.Borders(xlInsideVertical)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With Selection.Borders(xlInsideHorizontal)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With Selection '循环被选中的单元格设置居中
                .HorizontalAlignment = xlCenter’水平对齐
                .VerticalAlignment = xlCenter‘垂直对齐
            End With
            HorizontalAlignment = xlCenter

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
31、在单元格内添加公式(SUMPRODUCT)
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

Range("AA3").Select
     ActiveCell.FormulaR1C1 = _
        "=SUMPRODUCT((R2C9:R" & x4 - dy & "C9>-1)*(R2C9:R" & x4 - dy & "C9<1))"

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
32、复制某个单元格
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

Range("AB3").SelectTr
Application.CutCopyMode = True

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
33、单元格引用
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

Range("T5:AA5").Select '将表格T5至AA5
   ActiveCell.FormulaR1C1 = "=R" & x4 + 1 & "C[-12]" '上一行代码需要取值的单元格(该单元格值等于哪一个单元格值)

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
34、单元格边框
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

Selection.Merge '将表格加边框
            Range("L1:AS5").Select
            Selection.Borders(xlDiagonalDown).LineStyle = xlNone
            Selection.Borders(xlDiagonalUp).LineStyle = xlNone
            With Selection.Borders(xlEdgeLeft)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With Selection.Borders(xlEdgeTop)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With Selection.Borders(xlEdgeBottom)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With Selection.Borders(xlEdgeRight)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With Selection.Borders(xlInsideVertical)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With Selection.Borders(xlInsideHorizontal)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThin
            End With

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
35、复选框执行
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

Private Sub Checkbox1_Click()
if box1 = True and w1 = 1 Then'这里使用判断来控制复选框执行。用户只点击复选框时,复选框可以被勾选但不执行。必须要点击下面的执行按钮才能剩下执行。(这是折中方案)
'这里写入该模块的功能代码
end if
end sub

Private Sub Checkbox2_Click()
if box2 = True and w2 = 2 Then'这里使用判断来控制复选框执行。用户只点击复选框时,复选框可以被勾选但不执行。必须要点击下面的执行按钮才能剩下执行。(这是折中方案)
'这里写入该模块的功能代码
end if
end sub

Private Sub Checkbox3_Click()
if box3 = True and w3 = 3 Then'这里使用判断来控制复选框执行。用户只点击复选框时,复选框可以被勾选但不执行。必须要点击下面的执行按钮才能剩下执行。(这是折中方案)
'这里写入该模块的功能代码
end if
end sub

Pubilc w1, w2, w3'定义三个全局变量
Private Sub 执行_Click() '
j = "" '初始化为空
For m = 1 To 3 '开始循环,有几个复选框选项则写几。该项目中有3个选项所以写3
    If 用户主窗体名称.Controls("Checkbox" & m).Value = True Then '如果复选框被选中(""&m)引号给的是复选框名字
    If m = 1 Then
    box1 = True
    End If
    If m = 2 Then
    box2 = True
    End If
    If m = 3 Then
    box3 = True
    End If
    If j = "" Then '并且字符串当时为空
    j = 用户主窗体名称.Controls("Checkbox" & m).Caption '就将复选框的名字即j存放到char中
    Else: j = j & "," & 用户主窗体名称.Controls("Checkbox" & m).Caption '如果字符串已经有个1或2或3了,那么将新的内容用逗号与字符串中已经有的值连接起来
    End If
    End If
    Next
    if box1 = True Then'如下注释1
     用户主窗体名称.Controls("Checkbox1").Value = False'将Checbox1变成去勾选状态
     w1 = 1'将w1赋值为1
     用户主窗体名称.Controls("Checkbox1").Value = True'将Checbox1变成勾选状态
     w1 = 0'将w1赋值为1
     end if
     '注释1:这里之所以这样写是没有找到勾选复选框时不执行,只有点执行时才会执行的办法,所以选择了
     '折中先判断复选框是否被勾选了,如果勾选了将下面的box置为True。然后在所有的条件判断完成后再
     '将已被勾选的窗体去勾选,由于不满足执行条件,该控件下的代码不会执行,紧接着将w赋值后再将窗体
     '勾选,这样控件执行的条件满足后就能够正常执行控件下面的代码。而去勾选和再勾选的过程因为时间极
     '短用户基本无感知。也可以不用该方法直接把代码放在执行模块下面直接执行。(技术有限,勿喷)

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
36、取消(退出软件)
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

Unload Me'退出软件

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
37、If Else
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

sub ifelse()
i = 0
If i = 0 Then
i = 1'这里编写需要执行的代码
ElseIf i = 1 Then
i = 2'这里编写需要执行的代码
Else
i = 0'这里编写需要执行的代码
End If

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
38、For Next
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

Sub forNext()
Dim i%, j%
For i = 1 To 10
j = j + i
Next
MsgBox j
End Sub

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
39、While wend
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

i = 0
while i < 10
i = i + (i+1)
wend

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
40、Do Loop
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

当条件成立,开始循环:
sub Do()
Dim i%
Do While i<3
    i = i + 1
    MsgBox i
Loop
End Sub
直到条件成立,跳出循环:
sub Dountil()
i  = 0
Do Until i > 10:
	i = i+1
Loop
msgbox("")  & i

														  附     录:

不同Sub含义:
Public 表示 Sub 过程可被所有其他地方引用。和Sub性质一致,等价于Sub。
Private 表示 Sub 过程只能被当前页或者窗体引用,所以只能在本模块内部可以访问。


变量或字符串类型:
Variant:变体型变量(类型可变),能够表除了定长string数据和用户自定义类型外可以包含任何种类的 数据,也可以包含empty、error、nothing、null等特殊值。使用该类型定义会导致代码执行时间变长。非必要时不要用。
String:字符串类型。
integer:整数(范围:-32768~32768)
integer1:初始化是一个Variant类型的空值,随着对其的操作变成任意类型。
integer2:会被正常的初始化为0。
Dim integer1 as interger,integer2 as integer’这样1和2都为空值
Long:长整型(范围:-214743648 ~ 214743648)
Single 和 Double:单精度浮点数(Single) 和双精度浮点数(Double)
Currency:货币型
Byte:字节型
Boolean:布尔型(表示逻辑值True或False)
Date:日期(范围100年 ~ 9999年,0:00:00 ~ 23:59:59)
object:对象型。利用set语句,声明为对象型的变量可以赋值为任何对象引用
枚举型:

Public Enum words 'Pubilc(公共)或Private(私有)
    中国
    英国
    美国
    法国
End Enum
Sub ad()
	Dim from As words
	from = 英国
	from = 法国
End Sub

枚举型
用户自定义类型:

Type i
i as Double
End Type

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好!以下是实现VBA代码,以显示Sheet1单元格内容在窗体文本框中: 首先,您需要在窗体上创建一个文本框。在窗体设计器中,双击工具箱中的“文本框”控件并将其拖动到窗体上。然后右键单击文本框,选择“属性”窗口。在属性窗口中,找到“名称”属性并为文本框命名,例如“TextBox1”。 接下来,打开VBA编辑器。可以通过按下Alt+F11键或在开发者选项卡中单击“Visual Basic”按钮来打开VBA编辑器。 在VBA编辑器中,选择窗体对象并打开其“代码”视图。在代码视图中,找到窗体的“Load”事件处理程序,并将以下代码添加到该处理程序中: Private Sub UserForm_Initialize() TextBox1.Value = Sheets("Sheet1").Range("A1").Value End Sub 在上面的代码中,我们将Sheet1单元格A1的值赋值给名为“TextBox1”的文本框的Value属性。您可以更改单元格引用以显示所需的单元格内容。 ### 回答2: VBA是Visual Basic for Applications的缩写,是一种用于编写宏的编程语言。实现窗体文本框显示Sheet1单元格的内容可以通过以下步骤来完成: 1. 首先,在VBA编辑器中,打开窗体的代码模块。 2. 在窗体的代码模块中,声明一个变量来保存Sheet1单元格的内容。例如,可以使用以下命令声明一个名为cellValue的字符串变量: Dim cellValue As String 3. 在窗体的代码模块中,使用以下命令将Sheet1单元格的内容赋值给变量cellValue: cellValue = Sheets("Sheet1").Range("A1").Value 这里假设需要显示Sheet1单元格A1的内容。 4. 在窗体的代码模块中,使用以下命令将变量cellValue的值传递给文本框的Text属性,使其显示在窗体上: TextBox1.Text = cellValue 这里假设窗体上的文本框的名称为TextBox1。 5. 最后,保存并关闭VBA编辑器。 通过以上步骤,窗体的文本框将显示Sheet1单元格内容。每当Sheet1单元格的内容发生改变时,文本框的内容也会相应地更新。 ### 回答3: VBA是Visual Basic for Applications的缩写,是一种用于自动化和自定义Microsoft Office应用程序的编程语言。VBA可以与Excel进行集成,通过编写代码来实现各种功能。 要实现窗体文本框显示Sheet1单元格内容,可以按照以下步骤进行: 1. 打开Excel,创建一个新的宏,点击“开发工具”选项卡,选择“Visual Basic”按钮,打开Visual Basic编辑器。 2. 在Visual Basic编辑器中,找到VBA project窗口中的VBA项目名称,右键点击,选择“插入”-“用户窗体”来创建一个新的用户窗体。 3. 在用户窗体上添加一个文本框控件,通过在工具箱中拖动放置到用户窗体上。可以调整文本框的大小和位置。 4. 双击文本框,进入文本框的事件处理程序。 5. 在文本框的事件处理程序中,编写以下VBA代码: Private Sub TextBox1_Change() Dim cellValue As Variant cellValue = ThisWorkbook.Sheets("Sheet1").Range("A1").Value TextBox1.Text = cellValue End Sub 这段代码的作用是在TextBox1的Change事件中,将Sheet1的A1单元格的值赋值给TextBox1的文本。 6. 在用户窗体中,右键点击用户窗体的名称,选择“显示代码”来打开代码窗口。在代码窗口中编写以下VBA代码: Private Sub UserForm_Initialize() Dim cellValue As Variant cellValue = ThisWorkbook.Sheets("Sheet1").Range("A1").Value TextBox1.Text = cellValue End Sub 这段代码的作用是在用户窗体初始化时,将Sheet1的A1单元格的值赋值给TextBox1的文本。 7. 验证代码的正确性后,点击“保存”并关闭Visual Basic编辑器。 8. 返回Excel,打开VBA编辑器,双击Sheet1,进入Sheet1的事件处理程序。 9. 在Sheet1的事件处理程序中,编写以下VBA代码: Private Sub Worksheet_Change(ByVal Target As Range) UserForm1.TextBox1.Text = Target.Value End Sub 这段代码的作用是当Sheet1单元格内容发生变化时,将变化的内容赋值给用户窗体中的TextBox1。 10. 最后,关闭VBA编辑器。现在,当你在Sheet1单元格输入内容时,用户窗体中的文本框将显示Sheet1单元格的内容。 以上是使用VBA实现窗体文本框显示Sheet1单元格内容的步骤,你可以根据具体的需求进行适当的修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值