目 录
编号 | 名称 | 编号 | 名称 | 编号 | 名称 | 编号 | 名称 | 编号 | 名称 |
---|---|---|---|---|---|---|---|---|---|
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表格(只显示用户窗体)
┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻
自动打开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