创建工作薄
Sub 创建工作薄()
Dim wb As Workbook
Dim sh As Worksheet
Set wb = Workbooks.Add
wb.SaveAs Filename:="创建工作薄.xlsx"
'Set sh = wb.ActiveSheet '这个是因为知道,创建workbooks时会自带3个sheet
Set sh = wb.Worksheets.Add
With sh
.Name = "new"
.Range("a1:d1") = Array("ID", "属性1", "属性2", "属性3")
End With
ActiveWorkbook.Save '保存文件
End Sub
获取路径
返回应用程序完整路径
Application.Path
返回当前工作薄的路径
ThisWorkbook.Path
返回当前默认文件路径:
Application.DefaultFilePath
Application.ActiveWorkbook.Path 只返回路径
Application.ActiveWorkbook.FullName 返回路径及工作簿文件名
Application.ActiveWorkbook.Name 返回工作簿文件名
判断文件(夹)是否存在
方法一
Function IsFileExists(ByVal strFileName As String) As Boolean
If Dir(strFileName, 16) <> Empty Then
IsFileExists = True
Else
IsFileExists = False
End If
End Function
Sub Run()
If IsFileExists("D:\vba\abc.txt") = True Then
' 文件存在时的处理
MsgBox "文件存在!"
Else
' 文件不存在时的处理
MsgBox "文件不存在!"
End If
End Sub
方法二
Function IsFileExists(ByVal strFileName As String) As Boolean
Dim objFileSystem As Object
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
If objFileSystem.fileExists(strFileName) = True Then
IsFileExists = True
Else
IsFileExists = False
End If
End Function
Sub Run()
If IsFileExists("D:\vba\abc.txt") = True Then
' 文件存在时的处理
MsgBox "文件存在!"
Else
' 文件不存在时的处理
MsgBox "文件不存在!"
End If
End Sub
方法三
Public Function FileFolderExists(strFullPath As String) As Boolean
On Error GoTo EarlyExit
If Not Dir(strFullPath, vbDirectory) = vbNullString Then FileFolderExists = True
EarlyExit:
On Error GoTo 0
End Function
Public Sub TestFolderExistence()
If FileFolderExists("c:/windows/") Then
MsgBox "指定的文件夹存在!"
Else
MsgBox "指定的文件夹不存在!"
End If
End Sub
Public Sub TestFileExistence()
If FileFolderExists("d:/Book1.xls") Then
MsgBox "指定的文件存在!"
Else
MsgBox "指定的文件不存在!"
End If
End Sub
删除文件(夹)
删除文件
kill filepath
删除文件夹
rmdir dirpath
获取当前日期
Sub run()
Dim idate as date
idate=Format(now,"yyyy/m/d")
MsgBox "当前日期为:" & idate
End Sub
获取变量类型
(1)、TypeName()函数
用来返回变量或对象类型的字符串。
(2)、VarType()函数
用来返回用数字表示的变量或对象类型。不同的是,对于不同的对象,它统一返回对象类型,而不是像TypeName函数一样,返回不同的对象字符描述。
清除单元格内容、格式、批注
Range(“a1:d10”).ClearContents ‘清除A1:D10区域的公式/值
Range(“a1:d10”).Clear’全清(值,格式,批注)
Range(“a1:d10”).clearformats ‘清除格式
UsedRange用法
关于UsedRange属性,你想要的都在这里
(1)已用单元格区域的第一行行序数:UsedRange.Row
(2)已用单元格区域的占用的行数:UsedRange.Rows.Count
(3)已用单元格区域的最后一行的列序数: UsedRange .Row+ UsedRange. Rows.Count-1 (重要)
(4)已用单元格区域的第一列列序数:UsedRange.Column
(5)已用单元格区域的占用的列数:UsedRange.Columns.Count 已用单元格区域的最后一列的列序数:UsedRange.Column+UsedRange.Columns.Count-1,UsedRange.Areas.Count>1除外(Areas(index)也返回的是Range对象)
(6)已用单元格区域的占用的总单元格数:UsedRange.Cells.Count或 Me.UsedRange.Count,返回的只是“行数×列数”,所以无论内部有无合并单元格,此值不受影响。
(7)语句Activesheet.UsedRange.Address返回当前工作表已使用单元格区域的地址
整数转字符串
个人宏工作簿
把宏保存在Excel自动创建的文件中(后缀名为.xlsb),当打开其他工作薄是也能看到之前创建的宏。方便共享实现调用
数据类型
- Byte:1字节,范围:0~255
- Boolean:2字节,范围:True/FALSE
- Integer:2字节,范围:-32768~32767
- Long:4字节,范围:-2147483648~2147483647
- Single:4字节,范围:负:-3.40E38~-1.40E-45;正:1.40E-45~3.40E38
- Double:8字节,范围:-1.79E308~-4.9E-324,4.94E-324~1.79E308
- Currency:8字节,范围:-922337203685477~922337203685477
-
注释快捷键
设置注释:Alt + S
- 取消注释:Alt + Z
VBA删除整个文件夹(包括下面的文件及子文件夹)
方法一:
Sub mydel()
Shell “cmd.exe /c rd/s/q d:\test\temp\”
Shell “cmd.exe /c md d:\test\temp”
End Sub
方法二:请小心使用以下代码!!后果自负
Sub DelAll()
strpathname = “D:\”
CreateObject(“scripting.filesystemobject”).getfolder(strpathname).Delete True
End Sub
可参考的FileSystemObject 对象相关操作说明(虽然是js,但也可参考)
列号↔字母(转换)
Sub test3()
MsgBox ConvertToLetter(27)
End Sub
'列号转字母
Function ConvertToLetter(iCol As Integer) As String
Dim iAlpha As Integer
Dim iRemainder As Integer
iAlpha = Int(iCol / 27)
iRemainder = iCol - (iAlpha * 26)
If iAlpha > 0 Then
ConvertToLetter = Chr(iAlpha + 64)
End If
If iRemainder > 0 Then
ConvertToLetter = ConvertToLetter & Chr(iRemainder + 64)
End If
End Function
'字母转列号
Sub ConverToNum()
Dim x as string
x = "AA"
Range(x & cstr(1)).column
End Sub