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

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

┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
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表格(只显示用户窗体)
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻
office VBA 用户窗体 控件 单元格 参数的用法与注解_第1张图片

自动打开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没有任何意义,只是为了让该单元格有字符)其他需要同样操作的单元格类似,然后使用下面的代码,将该列所需要复用的公式进行复用。
office VBA 用户窗体 控件 单元格 参数的用法与注解_第2张图片

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

office VBA 用户窗体 控件 单元格 参数的用法与注解_第3张图片
用户自定义类型:

Type i
i as Double
End Type

你可能感兴趣的:(office,VBA用户窗体,其他,经验分享,excel,vba)