深度win10- 绿色安全免费的win10系统下载站
自助下单地址(拼多多砍价,ks/qq/dy赞等业务):点我进入
另外特别说明下,在VBA中定义变量与常量:
1)VBA 允许使用未定义的变量,默认是变体变量。
2)在模块通用说明部份,加入OptionExplicit 语句可以强迫用户进行变量定义。
3)变量定义语句及变量作用域
Dim 变量as类型'定义为局部变量,如Dimxyz as integer
Private变量as类型'定义为私有变量,如Privatexyz as byte
Public变量as类型'定义为公有变量,如Publicxyz as single
Global变量as类型'定义为全局变量,如Globlal xyzas date
Static变量as 类型'定义为静态变量,如Staticxyz as double
一般变量作用域的原则是,那部份定义就在那部份起作用,模块中定义则在该模块那作用。
4)常量为变量的一种特例,用Const定义,且定义时赋值,程序中不能改变值,作用域也如同变量作用域。如下定义:ConstPi=3.1415926 as single。
内部函数:
测试函数
IsNumeric(x) ‘是否为数字, 返回Boolean 结果,True or False
IsDate(x) ‘是否是日期, 返回Boolean 结果,True or False
IsEmpty(x) ‘是否为Empty, 返回Boolean 结果转换器未能打开文件,True or False
IsArray(x) ‘指出变量是否为一个数组。
IsError(expression) ‘指出表达式是否为一个错误值
IsNull(expression) ‘指出表达式是否不包含任何有效数据(Null)。
IsObject(identifier)‘指出标识符是否表示对象变量
数学函数
Sin(X)、Cos(X)、Tan(X)、Atan(x) 三角函数,单位为弧度
Log(x) 返回x 的自然对数
Exp(x)返回ex
Abs(x) 返回绝对值
Int(number)、Fix(number) 都返回参数的整数部分,区别:Int将-8.4 转换成-9,而Fix 将-8.4 转换成-8
Sgn(number) 返回一个Variant (Integer),指出参数的正负号
Sqr(number) 返回一个Double,指定参数的平方根
VarType(varname) 返回一个Integer,指出变量的子类型
Rnd(x)返回0-1 之间的单精度数据,x 为随机种子
字符串函数
Trim(string)
去掉string 左右两端空白
Ltrim(string)
去掉string 左端空白
Rtrim(string)
去掉string 右端空白
Len(string)
计算string 长度
Left(string, x)
取string 左段x 个字符组成的字符串
Right(string, x)
取string 右段x 个字符组成的字符串
Mid(string, start,x)
Mid(string, start,x) 取string 从start 位开始的x 个字符组成的字符串
Ucase(string)
Ucase(string) 转换为大写
Lcase(string)
转换为小写
Space(x)
返回x 个空白的字符串
Asc(string)
返回一个integer,代表字符串中首字母的字符代码
Chr(charcode)
返回string,其中包含有与指定的字符代码相关的字符
转换函数
CBool(expression)
转换为Boolean 型
CByte(expression)
转换为Byte 型
CCur(expression)
转换为Currency 型
CDate(expression)
转换为Date 型
CDbl(expression)
转换为Double 型
CDec(expression)
转换为Decemal 型
CInt(expression)
转换为Integer 型
CLng(expression)
转换为Long 型
CSng(expression)
转换为Single 型
CStr(expression)
转换为String 型
CVar(expression)
转换为Variant 型
Val(string)
转换为数据型
Str(number)
转换为String
时间函数
Now 返回一个Variant (Date)转换器未能打开文件,根据计算机系统设置的日期和时间来指定日期和时间。
Date 返回包含系统日期的Variant (Date)。
Time 返回一个指明当前系统时间的Variant (Date)。
Timer 返回一个Single,代表从午夜开始到现在经过的秒数。
TimeSerial(hour, minute, second) 返回一个Variant (Date),包含具有具体时、分、秒的时间。
DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]) 返回Variant
(Long) 的值,表示两个指定日期间的时间间隔数目
Second(time) 返回一个Variant (Integer),其值为0 到59 之间的整数,表示一分钟之中的某个秒
Minute(time) 返回一个Variant (Integer),其值为0 到59 之间的整数,表示一小时中的某分钟
Hour(time) 返回一个Variant (Integer),其值为0 到23 之间的整数,表示一天之中的某一钟点
Day(date) 返回一个Variant (Integer),其值为1 到31 之间的整数,表示一个月中的某一日
Month(date) 返回一个Variant (Integer),其值为1 到12 之间的整数,表示一年中的某月
Year(date) 返回Variant (Integer),包含表示年份的整数。
Weekday(date, [firstdayofweek]) 返回一个Variant (Integer),包含一个整数,代表某个日期是星期几
MsgBox的参数及用法
在消息框中显示信息,并等待用户单击按钮,可返回单击的按钮值(比如“确定”或者“取消”)。通常用作显示变量值的一种方式。
语法
MsgBox(Prompt[,Buttons][,Title][,Helpfile,Context])
参数说明:
(1)Prompt,必需的参数,为字符串,作为显示在消息框中的消息文本。其最大长度约为1024个字符,由所用字符的宽度决定。如果prompt的内容超过一行,则可以在每一行之间用回车符(Chr(13))、换行符(Chr(10))或是回车与换行符的组合(Chr(13)&Chr(10))将各行分隔开来。
(2)Buttons,可选的参数,为数值表达式的值之和,指定显示的按钮的数目及形式、使用的图标样式、缺省按钮及消息框的强制回应等,可以此定制消息框。若省略该参数,则其缺省值为0。设置值见下表。
(3)Title,可选的参数,表示在消息框的标题栏中所显示的文本。若省略该参数,则将应用程序名放在标题栏中。
(4)Helpfile,可选的参数,为字符串表达式,提供帮助文件。若有Helpfile,则必须有Context。
(5)Context,可选的参数,为数值表达式,提供帮助主题。若有Context,则必须有Helpfile。
用于MsgBox函数中Button参数的常量
符号常量
值
作用
按钮类型
vbokonly
0
只显示“确定”按钮
vbokcancel
1
显示“确定”及“取消”按钮
vbabortretryignore
2
显示“终止”、“重试”及“忽略”按钮
vbyesnocancel
3
显示“是”、“否”及“取消”按钮
vbyesno
4
显示“是”、“否”按钮
vbretrycancel
5
显示“重试”及“取消”按钮
图标样式
vbcritical
16
显示critical message图标(系统叉号图标)
vbquestion
32
显示warning query图标(系统问号图标)
vbexclamation
48
显示warning message图标(系统感叹号图标)
vbinformation
64
显示information message图标(系统信息图标)
默认按钮
vbdefauitbutton1
0
第一个按钮是默认值
vbdefauitbutton2
256
第二个按钮是默认值
vbdefauitbutton3
512
第三个按钮是默认值
vbdefauitbutton4
768
第四个按钮是默认值
强制返回
vbapplicationmode1
0
应用程序强制返回
vbsystemmode1
4096
系统强制返回
其他类型
vbmsgboxhelpbutton
16384
在对话框中添加一个“帮助”按钮
vbmsgboxsetforeground
65535
指定对话框窗口作为前景窗口
vbmsgboxright
524288
对话框的文本为右对齐
vbmsgboxrtireading
1048576
指定对话框中的元素从右到左显示
用于MsgBox函数返回值的常量
常数
值
说明
vbOK
1
确定
vbCancel
2
取消
vbAbort
3
终止
vbRetry
4
重试
vbIgnore
5
忽略
vbYes
6
是
vbNo
7
否
文件的操作:
新建:Workbooks.Add
打开: Workbooks.Open"路径 \" & "文件名 .xls*"
文件打开对话框的使用:
Application.GetOpenFilename(fileFilter:="Excel files(*.xls),*.xls,All files (*.*),*.*")
关闭与保存 :
ActiveWorkbook.Save
ActiveWorkbook.closesavingchanges:=true ‘关闭同时保存
Application.Quit‘Excel程序的关闭
Application.DisplayAlerts = True ‘关闭信息警告
删除
Kill pathname 从磁盘中删除文件, pathname 参数是用来指定一个文件名
RmDir pathname 从磁盘中删除目录,pathname 参数是用来指定一个文件夹
读入
Input#filenumber, varlist从已打开的顺序文件中读出数据并将数据指定给变量
Get[#]filenumber, [recnumber], varname将一个已打开的磁盘文件读入一个变量之中。
写入
Write#filenumber, [outputlist] 将数据写入顺序文件
Print#filenumber, [outputlist] 将格式化显示的数据写入顺序文件中
Put[#]filenumber, [recnumber], varname将一个变量的数据写入磁盘文件中。
打开文件:Open 开启及参数
.Open(FileName,UpdateLinks,ReadOnly,Format,Password,WriteResPassword,IgnoreReadOnlyRecommended,Origin,Delimiter,Editable,Notify,Converter,AddToMru,Local,CorruptLoad)
名称
必需/可选
数据类型
说明
FileName
可选
Variant
String. 要打开的工作簿的文件名。
UpdateLinks
可选
Variant
指定更新文件中外部引用(链接)的方式
ReadOnly
可选
Variant
如果为 True,则以只读模式打开工作簿。
Format
可选
Variant
如果 Microsoft Excel 打开文本文件,则由此参数指定分隔符。如果省略此参数,则使用当前的分隔符。有关此参数使用的值的详细信息,请参阅"备注"部分。
Password
可选
Variant
一个字符串,包含打开受保护工作簿所需的密码。如果省略此参数并且工作簿已设置密码,则提示用户输入密码。
WriteResPassword
可选
Variant
一个字符串,包含写入受保护工作簿所需的密码。如果省略此参数并且工作簿已设置密码,则提示用户输入密码。
IgnoreReadOnlyRecommended
可选
Variant
如果为True,则不让 Microsoft Excel 显示只读的建议消息(如果该工作簿以"建议只读"选项保存)。
Origin
可选
Variant
如果该文件为文本文件,则此参数用于指示该文件的来源,以便正确映射代码页和回车/换行符 (CR/LF))。
Delimiter
可选
Variant
如果该文件为文本文件并且 Format 参数为 6,则此参数是一个字符串,指定用作分隔符的字符。
Editable
可选
Variant
如果文件为 Microsoft Excel 4.0 外接程序,则此参数为True时可打开该外接程序以使其成为可见窗口。
Notify
可选
Variant
当文件不能以可读写模式打开时,如果此参数为True,则可将该文件添加到文件通知列表。
Converter
可选
Variant
打开文件时试用的第一个文件转换器的索引。首先试用的是指定的文件转换器;如果该转换器不能识别此文件,则将试用所有其他转换器。转换器索引由FileConverters属性返回的转换器行号组成。
AddToMru
可选
Variant
如果为True,则将该工作簿添加到最近使用的文件列表中。默认值为False。
Local
可选
Variant
如果为True,则以 Microsoft Excel(包括控制面板设置)的语言保存文件。
CorruptLoad
可选
XlCorruptLoad
可为以下常量之一:xlNormalLoad、xlRepairFile和xlExtractData。如果未指定任何值,则默认行为是xlNormalLoad,并且当通过 OM 启动时不尝试恢复状态。
保护工作表使其不至被修改: Sheets(“工作表名 ”).Protect (Password)
撤销工作表保护使其被修改: Sheets(“工作表名 ”).Unprotect (Password)
如何引用单元格和区域
1)用 Range属性引用单元格和单元格区域 使用Range 属性来引用A1 引用样式中的单元格或单元格区域及进行属性更改和赋值。如例句:Sheets("Sheet1").Range("A1:D5").Font.Bold = True,Sheets("Sheet1").Range("A1:D5").Value= 10000
Cells属性引用单元格:
Worksheets("Sheet1").Cells(6,1).Value = 10
用Rows或Columns属性引用行列
用括号 [ ]引用单元格和区域
用 Offset相对其他单元格来引用单元格
用 Selection 属性引用活动区域
(1) Range(“A” & i)
(2) Range(“A” & i & “:C” & i)
(3) Cells(i,1)
(4) Cells(i,j)
其中,i、j为变量,在循环语句中指定i和j的范围后,依次获取相应单元格。
(1) ActiveCell.Resize(4,4),表示自当前单元格开始创建一个4行4列的区域。
(2) Range("B2").Resize(2,2),表示创建B2:C3单元格区域。
(3)Range("B2").Resize(2),表示创建B2:B3单元格区域。
(4) Range("B2").Resize(,2),表示创建B2:C2单元格区域。
(1) Range("A1").Offset(2,2),表示单元格C3。
(2) ActiveCell.Offset(,1),表示当前单元格下一列的单元格。
(3) ActiveCell.Offset(1),表示当前单元格下一行的单元格。
(4) Range("C3:D5").Offset(,1),表示单元格区域D3:E5,即将整个区域偏移一列。
可以使用Union方法,例如:
Union(Range("C3:D4"),Range("E5:F6")),表示单元格区域C3:D4和E5:F6所组成的区域。
ADO使用连接和操作数据库的步骤及方法:
介绍两种遍历文件夹及文件的方法:
1.FSO遍历文件夹
Sub GetFileNameList()
Dim iPath As String, i As Long
Dim t
t = Timer
iPath = "C:\Gann\VBAtest\" ' iPath =ThisWorkbook.Sheets("sheet1").Cells(1, 1)
If iPath = "False" OrLen(iPath) = 0 Then Exit Sub
i = 1
Call GetFolderFile(iPath, i)
' MsgBox Timer - t
'MsgBox "文件名链接获取完毕。", vbOKOnly, "提示"
End Sub
Private Sub GetFolderFile(ByValnPath As String, ByRef iCount As Long)
Dim iFileSys
Dim irow As Integer
Set iFileSys =CreateObject("Scripting.FileSystemObject")
Set iFolder =iFileSys.GetFolder(nPath) 'GetFolder方法:返回一个和指定路径中文件夹相对应的 Folder 对象
Set sfolder = iFolder.SubFolders 'SubFolders:返回包含所有文件夹的一个 Folders集合,包括设置了隐藏和系统文件属性的文件夹
Set iFile = iFolder.Files 'Files :提供包含在文件夹内的所有文件的列表
Sheet1.Cells(1, 1) = "文件名及路径"
Sheet1.Cells(1, 2) = "文件创建时间"
Sheet1.Cells(1, 3) = "文件size(KB)"
With ActiveSheet
For Each gFile In iFile
Sheet1.Cells(iCount + 1, 1) = gFile.Path &Name
Sheet1.Cells(iCount, 2) =gFile.datecreated '获取文件创建时间
Sheet1.Cells(iCount, 3) =Round(gFile.Size / 1024, 2)'获取文件size(KB)
iCount = iCount + 1
Next
End With
'递归遍历所有子文件夹
For Each nFolder In sfolder
Call GetFolderFile(nFolder.Path, iCount)
Next nFolder
End Sub
2.使用dir遍历文件夹
Sub GetFileName()
Dim Mypath, MyName, MyFileName, dic, d, i&, arr
Set dic = CreateObject("Scripting.Dictionary")
Set d = CreateObject("Scripting.Dictionary")
Application.DisplayAlerts = False
Mypath = "C:\Gann\VBA test\"
dic.Add (Mypath), ""
Do While i < dic.Count
arr = dic.keys'keys:返回一个包含dictionary所有键的数组
MyName = Dir(arr(i), vbDirectory)
Do While MyName ""
If MyName "."And MyName ".." Then
'"."表示当前目录,".."表示上一级目录
If (GetAttr(arr(i) &MyName) And vbDirectory) = vbDirectory Then
dic.Add (arr(i) &MyName & "\"), ""
End If
End If
MyName = Dir
Loop
i = i + 1
Loop
For Each arr In dic.keys
MyFileName = Dir(arr & "*.lot")
Do While MyFileName "" And MyFileName ThisWorkbook.Name
d.Add (arr & MyFileName),""
MyFileName = Dir
Loop
Next
Sheet1.Range("A2:Z65536").ClearContents
[E2].Resize(d.Count, 1) = WorksheetFunction.Transpose(d.keys)
For i = 2 To Sheet1.Cells(65536, 5).End(3).Row
arr = Split(Sheet1.Cells(i, 5), "\") 'Split(expression[, delimiter[,limit[, compare]]]):返回一个下标从零开始的一维数组,它包含指定数目的子字符串
'======设置表的header=====
Sheet1.Cells(1, 1) = "文件路径"
Sheet1.Cells(1, 2) = "父文件夹名"
Sheet1.Cells(1, 3) = "机台号"
Sheet1.Cells(1, 4) = "产品名称"
Sheet1.Cells(1, 5) = "文件创建时间"
Sheet1.Cells(1, 6) = "文件size(KB)"
Sheet1.Cells(i, 1) = Mypath &arr(UBound(arr)) 'UBound函数返回指定数组的最大下标
Sheet1.Cells(i, 2) = arr(UBound(arr) - 3)
Sheet1.Cells(i, 3) = arr(UBound(arr) - 2)
Sheet1.Cells(i, 4) = arr(UBound(arr) - 1)
Next
Columns(7).ClearContents
Application.DisplayAlerts = True
End Sub
过程和函数:
更多精彩:多多云手机www.xitongtiandi.net2022-03-03 /
系统之家WINDOWS 10 X64完美专业版 2022.03
2022-03-03 /
2022-02-28 /
2022-02-28 /
2022-02-23 /
2022-02-23 /
2022-02-23 /
2022-02-23 /
2022-02-17 /