End Sub
Option Explicit
的作用为:声明所有变量都需要先定义才能使用,否则程序在使用了未经定义的变量时就会报错'。
因VB中并不要求显示定义变量,即变量可以不经定义直接使用.
打开工作簿
Sub OpenWorkbooks()
Workbooks.Open("C:\users\Documents\我是新建的工作簿名.xlsx") '可以使用Open方法打开指定的工作簿,注意路径要填写完整'
End Sub '运行完成后将打开该工作簿'
返回当前工作簿的路径
Sub GetWorkbooksPath()
Application.ActiveWorkbook.Path '返回当前激活工作簿路径'
Application.ActiveWorkbook.FullName '返回当前激活工作簿路径及名称'
pplication.ActiveWorkbook.Name '返回当前激活工作簿文件名'
End Sub
VBA工作表:
第N个工作表 Worksheets(N)
指定名称的工作表 Sheets("工作表名")
第N个工作表 SheetN
活动工作表 Activesheets
Worksheets与Sheets的区别:Sheets集合代表当前工作簿中的所有工作表,包括图表工作表、对话框工作表和宏表。Worksheets集合仅代表当前工作簿中的所有工作表。
Sub TestSheetYesNo()
Dim mySheetName As String, mySheetNameTest As String
mySheetName = "Sheet4" '输入需测试的工作表名称'
On Error Resume Next
mySheetNameTest = Worksheets(mySheetName).Name
If Err.Number = 0 Then
MsgBox "The sheet named ''" & mySheetName & "'' does exist in this workbook."
Err.Clear
MsgBox "The sheet named ''" & mySheetName & "'' does NOT exist in this workbook."
End If
End Sub
On Error Resume Next的作用为:随后的程序即便出现"运行时错误"时,也不
会显示"出错信息",并且会继续运行下去。
VB提供两个语句和一个对象来处理"运行时错误",即:
On Error Resume Next 语句 该语句后面程序出现"运行时错误"时,会继续运行程序,仅只对当前函数有用。如果出错,那么Err对象中将放置最近一次出错的信息。
On Error Goto 0 语句 该语句后面程序出现"运行时错误"时,会显示"出错信息"并停止程序的执行。
Err对象 使用Err对象来得到错误信息。有重要的属性有三个:Number(错误号-设置或返回指定一个错误的值;Err.Number=0指的是还没有出现错误), Source(错误来源-设置或返回产生错误的对象的名称), Description(错误描述-设置或返回一个描述错误的字符串)。分别是错误号,错误来源,错误描述。
创建工作表
Sub TestSheetCreate()
Dim mySheetName As String, mySheetNameTest As String
mySheetName = "Sheet4"
'[可增加判断语句,判断Sheet4是否存在]'
Worksheets.Add.Name = mySheetName '该句创建工作表并命名为sheet4'
MsgBox "The sheet named ''" & mySheetName & "'' did not exist in this workbook but it has been created now."
End Sub
引用工作表
' 1 - 引用1个以上工作表'
Sub Several()
Worksheets(Array("Sheet1", "Sheet2", "Sheet4")).Select '选中表1、2、3'
End Sub
'2 - 按索引号引用工作表
如果移动、添加或删除工作表, 则索引顺序可能会更改'
Sub FirstOne()
Worksheets(1).Activate '引用第一个工作表'
Sheets(4).Activate '所有类型的工作表 (工作表、图表、模块和对话框工作表)第四张'
End Sub
'3 - 通过名称引用工作表'
Sub ActivateChart()
Worksheets("Sheet1").Activate '激活名称为“Sheet1”工作表'
Charts("Chart1").Activate '激活名称为“Sheet1”图表'
DialogSheets("Dialog1").Activate '激活名称为“Dialog1”对话框工作表'
Sheets("Chart1").Activate
End Sub
VBA单元格:
Range 引用单元格和单元格区域
Range('A1')=Cells(1,'A') =[A1] 单元格A1三种表示方法
Range('A1:B5') 从单元格A1到B5区域
Range('A1:B5,B1:B7') 多块的选定区域
Cells (行号,列号)
Range(cell(1,1),cells(30,1))=Range('A1:A30') 从单元格A1到A30区域
Seletion 当前被选取的区域
引用单元格
'1 - 引用工作表上的所有单元格'
Sub ClearSheet()
Worksheets("Sheet1").Cells.ClearContents '清除Sheet1所有单元格'
End Sub
'2 - 使用 A1 表示法引用单元格和区域'
Sub FormatRange()
Workbooks("Book1").Sheets("Sheet1").Range("A1:D5") _
.Font.Bold = True
End Sub
'3 - 使用 Range 对象引用单元格'
Sub Random()
Dim myRange As Range
Set myRange = Worksheets("Sheet1").Range("A1:D5")
myRange.Formula = "=RAND()"
myRange.Font.Bold = True
End Sub
'4 - 使用索引编号来引用单元格'
Sub EnterValue()
Worksheets("Sheet1").Cells(6, 1).Value = 10
End Sub
VBA整行、整列:
Rows('1:1')=Range('1:1')=Row(1) 第一行
Rows('2:10')=Range('2:10') 第2-10行
Columns('A:A')=Range('A:A')=Columns(1) 第一列,A列
Range('A:F')=Columns('A:F') A:F列
'将活动工作簿中第一张工作表上的第一行、第三行和第五行的字体设置为加粗'
Sub SeveralRows()
Worksheets("Sheet1").Activate
Dim myUnion As Range
Set myUnion = Union(Rows(1), Rows(3), Rows(5))
myUnion.Font.Bold = True
End Sub