一、强烈建议初学者理清Excel对象模型,在学写vba代码时,按层级来书写
本问题相关的对象层级为workbook - worksheet - range
二、关于引用单元格
Dim oBook As Workbook
Dim oSheet As Worksheet
Dim oRange As Range
Set oBook = Application.Workbooks("目标工作簿") '这里的Application指当前VBA代码所属的工作簿所在的Excel程序进程实例
Set oSheet = oBook.Worksheets("目标工作表")
'以下开始引用单元格
'1.引用单个单元格
Set oRange = oSheet.Range("A1") '常规方式
Set oRange = oSheet.Range("A" & 1) '动态列号
Set oRange = oSheet.Cells(1, 1) '行号+列号,可动态
Set oRange = oSheet.Cells(1, "A") '行号+列号
Set oRange = oSheet.[A1] '不建议使用
'Cells方法的缺点是无成员提醒
'2.引用连续单元格区域
Set oRange = oSheet.Range("A1:B2") '常规方式
Set oRange = oSheet.Range(oSheet.Cells(1, 1), oSheet.Cells(2, 2)) '长是长一点,某些时候还挺实用
Set oRange = oSheet.Range("A1", "B2") '使用率低
Set oRange = oSheet.Range("A1").Resize(2, 2) '极其灵活,配合Offset方法使用会更灵活
'3.引用不连续单元格区域
Set oRange = oSheet.Range("A1, B2:C3, D4")
Set oRange = Application.Union(oSheet.Range("A1"), oSheet.Range("B2:C3"), oSheet.Range("D4"))
'4.当前选定的单元格
Set oRange = Selection.Range
'5.行和列
Set oRange = oSheet.Rows(1)
Set oRange = oSheet.Columns(1)
'6.常用应用
Set oRange = oSheet.UsedRange '已使用的矩形单元格区域
Set oRange = oSheet.Range("A" & oSheet.Rows.Count).End(xlUp) '第A列,最后一个非空白单元格
Set oRange = oSheet.Cells(1, oSheet.Columns.Count).End(xlToLeft) '第1行,最后一个非空白单元格