论文部分内容阅读
【摘 要】 人们常说兴趣是最好的老师,压力是前进的动力。要想学好VBA只有培养浓厚的兴趣,才能有学习的动力,多学习基础知识,本文我们来看看VBA的一些基础知识。
【关键词】 VBA;语句;学习
一、对常用的VBA语句的理解
[A65536].End(xlUp).Row 'A列末行向上第一个有值的行数
[A1].End(xlDown).Row 'A列首行向下第一个有值之行数
[IV1].End(xlToLeft).Column '第一行末列向左第一列有数值之列数。
[A1].End(xlToRight).Column '第一行首列向右有连续值的末列之列数
Application.CommandBars("Standard").Controls(2).BeginGroup=True '在常用工具栏的第二个按钮前插入分隔符
Cells.WrapText = False '取消自动换行
If Len(Target) > 5 Then '如果当前单元格中的字符数超过5个,执行下一行
Target.WrapText = True '自动换行
End If
[A1:B10].SpecialCells(xlCellTypeBlanks).Rows.Hidden = True '有空格即隐藏行
[A2].parent.name '返回活动单元格的工作表名
[A2].parent.parent.name '返回活动单元格的工作簿名
如下代码可使工作簿打开后30秒(或闲置30秒)内不输入、不重新选择等,自动关闭工作簿
Private Sub Workbook_Open() '工作簿打开事件
tt '工作簿打开时启动 tt 过程
End Sub
Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) '工作表变化事件
tt '工作表中任一单元格有变化时启动 tt 过程
End Sub
Private Sub Workbook_SheetSelection Change(ByVal Sh As Object, ByVal Target As Range) '工作表选择变化事件
tt '工作表中单元格的选择有变化时启动 tt 过程
End Sub
Sub tt() 'tt 过程
Dim myNow As Date, BL As Integer '定义myNow为日期型;定义BL为长整型
myNow = Now '把当前的时间赋给变量myNow
Do '开始循环语句Do
BL = Second(Now) - Second(myNow) '循环中不断检查变量BL的值
If BL = 30 Then GoTo Cl '当BL=30即跳转到CL
DoEvents '转让控制权,以便sheets可继续操作
Loop Until BL > 30 '当BL>30即跳出循环
Exit Sub
Cl:
Application.EnableEvents = False '避免引起其他事件
ActiveWorkbook.Close True '关闭活动工作簿并保存
Application.EnableEvents = True '可触发其他事件
End Sub
range("e4").addcomment.Text "代头" & Chr(10) & "内容……" '添加批注
range("e4").Comment.Visible = True '显示批注
把工作簿中所有工作表的指定列调整为最佳列宽:
Sub 调整列宽()
Dim i%
For i = 1 To Sheets.Count '遍历工作簿中所有的工作表
Sheets(i).Columns("A:K").AutoFit '把每个工作表的[A:K]列调整为最佳列宽
Next i
End Sub
Do循环语句的几种形式:
1.
Do While i>1 '条件为True时执行
... ... '要执行的语句
Loop
2.
Do Until i>1 '条件为False时执行
... ... '要执行的语句
Loop
3.
Do
... ... '要执行的语句
Loop While i>1 '条件为True时执行
4.
Do
... ... '要执行的语句
Loop Until i>1 '条件为False时执行
5.While...Wend 语句
While i>1 '条件为True时执行
... ... '要执行的语句
Wend
勾选"VBA项目的信任"
Application.SendKeys "%(tmstv){ENTER}" '在 Excel 窗口操作 Application.SendKeys "%(qtmstv){ENTER}" '在 VBE 窗口操作
Application.CommandBars("命令按钮名称").Position = msoBarFloating '使[命令按钮]悬浮在表格中
Application.CommandBars("命令按钮名称").Position = msoBarTop '使[命令按钮]排列在工具栏中
ActiveSheet.protect Password:="wshzw" '为工作表保护加口令
ActiveSheet.Unprotect Password:="wshzw" '解除工作表保护
Activesheet.ProtectContents '判断工作表是否处于保护状态
工作表的复制与命名
Sub wshzw()
Dim i As Integer
For i = 1 To 5
Sheets("Sheet1").Copy After:=Sheets(1) 'Before/After 复制新表在 Sheets("Sheet1") 前/后
ActiveSheet.Name = i & "月" '为复制的新表命名
Next i
Sheets("Sheet1").Name = "总表" '为 Sheets("Sheet1") 改名
End Sub
Application.EnableEvents = False
......
Application.EnableEvents = True '抑制事件连锁执行
Application.EnableEvents = False
ActiveWorkbook.Save '抑制BeforeSave事件的发生
Application.EnableEvents = True '抑制指定事件
Application.DisplayAlerts=False '屏蔽确认提示
复制行高列宽与内容:
Sub Yjue() '过程的名称
Sheet2.Rows("2:23").Copy '复制行区域
Sheet3.Select '选择粘贴区域
Range("A2").PasteSpecial Paste:=xlPasteColumnWidths '粘贴类型
ActiveSheet.Paste '实施粘贴
Application.CutCopyMode = False '取消复制模式
End Sub
如整行为空白则删除整行:
Sub DelRow()
Dim i As Integer, LastRow As Integer
LastRow = ActiveSheet.Cells.Special Cells(xlCellTypeLastCell).Row '把最后行的行号赋给变量
For i = LastRow To 1 Step -1 '倒循环
If Range("iv" & i).End(xlToLeft).Column = 1 And Range("a" & i) = "" Then
Range("a" & i).EntireRow.Delete '如整行为空白则删除整行
End If
Next i
End Sub
T = Application.GetOpenFilename("Text Files (*.dat), *.dat")选择文件保存路径
通过依次赋色给单元格的例子,展示简单的 On Error GoTo Line1 用法:
Sub Yjue() '过程名
Dim i As Integer '定义 i 为整型
On Error GoTo Line1 '遇到错误跳转到 Line1
For i = 0 To 65 '予设从 0 循环到 65
Cells(i + 1, 2).Interior.ColorIndex = i '依次赋色给第2列的单元格
Cells(i + 1, 1) = i '依次给第1列的单元格标上色索引号
Next i
Exit Sub '退出过程
Line1: '遇到错误跳转到这行继续执行
MsgBox "默认颜色只有 " & i - 1 & "种。" '提示对话框
End Sub '结束过程
通过显示或取消网格线,展示运算符“Not”应用的简单示例:
Dim myLine As Boolean '定义变量myLine为布尔型
With CommandButton1 'With语句结构
If .Caption = "取消网格线" Then '如按钮上显示为"取消网格线"
Caption = "显示网格线" '改按钮上的字幕为"显示网格线"
myLine = ActiveWindow.DisplayGridlines '把活动窗口当前网格线的显示状态赋给变量
ActiveWindow.DisplayGridlines = Not myLine '进行逻辑否定运算 Else
Caption = "取消网格线" '否则按钮上显示为"取消网格线"
ActiveWindow.DisplayGridlines = Not myLine '进行逻辑否定运算
End If
End With '结束With语句结构
ActiveCell.Offset(, -1).Name = "hzw" '定义名称
ActiveCell.Precedents.Address '被当前单元格所引用的区域地址
ActiveCell.Resize(0, 2).Select '选定当前单元格并向右延伸二格
Activesheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1 '显示自动筛选后的行数
二、定制模块行为
(1) Option Explicit '强制对模块内所有变量进行声明
Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示
Option Compare Text '字符串不区分大小写
Option Base 1 '指定数组的第一个下标为1
(2) On Error Resume Next '忽略错误继续执行VBA代码,避免出现错误消息
(3) On Error GoTo ErrorHandler '当错误发生时跳转到过程中的某个位置
(4) On Error GoTo 0 '恢复正常的错误提示
(5) Application.DisplayAlerts=False '在程序执行过程中使出现的警告框不显示
(6) Application.ScreenUpdating=False '关闭屏幕刷新
Application.ScreenUpdating=True '打开屏幕刷新
(7) Application.Enable.CancelKey=xlDisabled '禁用Ctrl+Break中止宏运行的功能
工作簿
(8) Workbooks.Add() '创建一个新的工作簿
(9) Workbooks(“book1.xls”).Activate '激活名为book1的工作簿
(10) ThisWorkbook.Save '保存工作簿
(11) ThisWorkbook.close '关闭当前工作簿
(12) ActiveWorkbook.Sheets.Count '获取活动工作薄中工作表数
(13) ActiveWorkbook.name '返回活动工作薄的名称
(14) ThisWorkbook.Name ‘返回当前工作簿名称
ThisWorkbook.FullName ‘返回当前工作簿路径和名称
(15) ActiveWindow.EnableResize=False ‘禁止调整活动工作簿的大小
(16) Application.Window.Arrange xlArrangeStyleTiled ‘将工作簿以平铺方式排列
(17) ActiveWorkbook.WindowState=xlMaximized ‘将当前工作簿最大化
工作表
(18) ActiveSheet.UsedRange.Rows.Count ‘当前工作表中已使用的行数
(19) Rows.Count ‘获取工作表的行数(注:考虑向前兼容性)
(20) Sheets(Sheet1).Name= “Sum” '将Sheet1命名为Sum
(21) ThisWorkbook.Sheets.Add Before:=Worksheets(1) '添加一个新工作表在第一工作表前
(22) ActiveSheet.Move After:=ActiveWorkbook. _
Sheets(ActiveWorkbook.Sheets.Count) '将当前工作表移至工作表的最后
(23) Worksheets(Array(“sheet1”,”sheet2”)).Select '同时选择工作表1和工作表2
(24) Sheets(“sheet1”).Delete或 Sheets(1).Delete '删除工作表1
(25) ActiveWorkbook.Sheets(i).Name '获取工作表i的名称
(26) ActiveWindow.DisplayGridlines=Not ActiveWindow.DisplayGridlines
'切换工作表中的网格线显示,这种方法也可以用在其它方面进行相互切换,即相当于开关按钮
(27) ActiveWindow.DisplayHeadings=Not ActiveWindow.DisplayHeadings
‘切换工作表中的行列边框显示
(28) ActiveSheet.UsedRange.FormatConditions.Delete ‘删除当前工作表中所有的条件格式
(29) Cells.Hyperlinks.Delete ‘取消当前工作表所有超链接
(30) ActiveSheet.PageSetup.Orientation=xlLandscape 或ActiveSheet.PageSetup.Orientation=2 '将页面设置更改为横向
(31) ActiveSheet.PageSetup.RightFooter=ActiveWorkbook.FullName ‘在页面设置的表尾中输入文件路径
ActiveSheet.PageSetup.LeftFooter=Application.UserName ‘将用户名放置在活动工作表的页脚
单元格/单元格区域
(32) ActiveCell.CurrentRegion.Select
或Range(ActiveCell.End(xlUp),ActiveCell.End(xlDown)).Select
'选择当前活动单元格所包含的范围,上下左右无空行
(33) Cells.Select ‘选定当前工作表的所有单元格
(34) Range(“A1”).ClearContents '清除活动工作表上单元格A1中的内容
Selection.ClearContents '清除选定区域内容
Range(“A1:D4”).Clear '彻底清除A1至D4单元格区域的内容,包括格式
(35) Cells.Clear '清除工作表中所有单元格的内容
(36) ActiveCell.Offset(1,0).Select '活动单元格下移一行,同理,可下移一列
(37) Range(“A1”).Offset(ColumnOffset:=1)或Range(“A1”).Offset(,1) ‘偏移一列
Range(“A1”).Offset(Rowoffset:=-1)或Range(“A1”).Offset(-1) ‘向上偏移一行
(38) Range(“A1”).Copy Range(“B1”) '复制单元格A1,粘贴到单元格B1中
Range(“A1:D8”).Copy Range(“F1”) '将单元格区域复制到单元格F1开始的区域中
Range(“A1:D8”).Cut Range(“F1”) '剪切单元格区域A1至D8,复制到单元格F1开始的区域中
Range(“A1”).CurrentRegion.Copy Sheets(“Sheet2”).Range(“A1”)
'复制包含A1的单元格区域到工作表2中以A1起始的单元格区域中
注:CurrentRegion属性等价于定位命令,由一个矩形单元格块组成,周围是一个或多个空行或列
本示例选定工作表 Sheet1 上的当前区域。
Worksheets("Sheet1").Activate
ActiveCell.CurrentRegion.Select
本示例假定在工作表 Sheet1
中有一个包含标题行的表。本示例选定该表,但不选定标题行。运行本示例之前,活动单元格必须处于该表中。
Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
tbl.Columns.Count).Select
(39) ActiveWindow.RangeSelection.Value=XX '将值XX输入到所选单元格区域中
(40) ActiveWindow.RangeSelection.Count '活动窗口中选择的单元格数
(41) Selection.Count '当前选中区域的单元格数
(42) GetAddress=Replace(Hyperlinkcell.Hyperlinks(1).Address,mailto:,””)
‘返回单元格中超级链接的地址并赋值
(43) TextColor=Range(“A1”).Font.ColorIndex ‘检查单元格A1的文本颜色并返回颜色索引
Range(“A1”).Interior.ColorIndex ‘获取单元格A1背景色
(44) cells.count ‘返回当前工作表的单元格数
(45) Selection.Range(“E4”).Select ‘激活当前活动单元格下方3行,向右4列的单元格
(46) Cells.Item(5,”C”) ‘引单元格C5
Cells.Item(5,3) ‘引单元格C5
三、结语
只有掌握好VBA的基础知识才能融会贯通,举一反三,VBA的基础知识对于初学者比较烦躁,万事开头难,只要有信心有毅力,一定可以把VBA学好
【关键词】 VBA;语句;学习
一、对常用的VBA语句的理解
[A65536].End(xlUp).Row 'A列末行向上第一个有值的行数
[A1].End(xlDown).Row 'A列首行向下第一个有值之行数
[IV1].End(xlToLeft).Column '第一行末列向左第一列有数值之列数。
[A1].End(xlToRight).Column '第一行首列向右有连续值的末列之列数
Application.CommandBars("Standard").Controls(2).BeginGroup=True '在常用工具栏的第二个按钮前插入分隔符
Cells.WrapText = False '取消自动换行
If Len(Target) > 5 Then '如果当前单元格中的字符数超过5个,执行下一行
Target.WrapText = True '自动换行
End If
[A1:B10].SpecialCells(xlCellTypeBlanks).Rows.Hidden = True '有空格即隐藏行
[A2].parent.name '返回活动单元格的工作表名
[A2].parent.parent.name '返回活动单元格的工作簿名
如下代码可使工作簿打开后30秒(或闲置30秒)内不输入、不重新选择等,自动关闭工作簿
Private Sub Workbook_Open() '工作簿打开事件
tt '工作簿打开时启动 tt 过程
End Sub
Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) '工作表变化事件
tt '工作表中任一单元格有变化时启动 tt 过程
End Sub
Private Sub Workbook_SheetSelection Change(ByVal Sh As Object, ByVal Target As Range) '工作表选择变化事件
tt '工作表中单元格的选择有变化时启动 tt 过程
End Sub
Sub tt() 'tt 过程
Dim myNow As Date, BL As Integer '定义myNow为日期型;定义BL为长整型
myNow = Now '把当前的时间赋给变量myNow
Do '开始循环语句Do
BL = Second(Now) - Second(myNow) '循环中不断检查变量BL的值
If BL = 30 Then GoTo Cl '当BL=30即跳转到CL
DoEvents '转让控制权,以便sheets可继续操作
Loop Until BL > 30 '当BL>30即跳出循环
Exit Sub
Cl:
Application.EnableEvents = False '避免引起其他事件
ActiveWorkbook.Close True '关闭活动工作簿并保存
Application.EnableEvents = True '可触发其他事件
End Sub
range("e4").addcomment.Text "代头" & Chr(10) & "内容……" '添加批注
range("e4").Comment.Visible = True '显示批注
把工作簿中所有工作表的指定列调整为最佳列宽:
Sub 调整列宽()
Dim i%
For i = 1 To Sheets.Count '遍历工作簿中所有的工作表
Sheets(i).Columns("A:K").AutoFit '把每个工作表的[A:K]列调整为最佳列宽
Next i
End Sub
Do循环语句的几种形式:
1.
Do While i>1 '条件为True时执行
... ... '要执行的语句
Loop
2.
Do Until i>1 '条件为False时执行
... ... '要执行的语句
Loop
3.
Do
... ... '要执行的语句
Loop While i>1 '条件为True时执行
4.
Do
... ... '要执行的语句
Loop Until i>1 '条件为False时执行
5.While...Wend 语句
While i>1 '条件为True时执行
... ... '要执行的语句
Wend
勾选"VBA项目的信任"
Application.SendKeys "%(tmstv){ENTER}" '在 Excel 窗口操作 Application.SendKeys "%(qtmstv){ENTER}" '在 VBE 窗口操作
Application.CommandBars("命令按钮名称").Position = msoBarFloating '使[命令按钮]悬浮在表格中
Application.CommandBars("命令按钮名称").Position = msoBarTop '使[命令按钮]排列在工具栏中
ActiveSheet.protect Password:="wshzw" '为工作表保护加口令
ActiveSheet.Unprotect Password:="wshzw" '解除工作表保护
Activesheet.ProtectContents '判断工作表是否处于保护状态
工作表的复制与命名
Sub wshzw()
Dim i As Integer
For i = 1 To 5
Sheets("Sheet1").Copy After:=Sheets(1) 'Before/After 复制新表在 Sheets("Sheet1") 前/后
ActiveSheet.Name = i & "月" '为复制的新表命名
Next i
Sheets("Sheet1").Name = "总表" '为 Sheets("Sheet1") 改名
End Sub
Application.EnableEvents = False
......
Application.EnableEvents = True '抑制事件连锁执行
Application.EnableEvents = False
ActiveWorkbook.Save '抑制BeforeSave事件的发生
Application.EnableEvents = True '抑制指定事件
Application.DisplayAlerts=False '屏蔽确认提示
复制行高列宽与内容:
Sub Yjue() '过程的名称
Sheet2.Rows("2:23").Copy '复制行区域
Sheet3.Select '选择粘贴区域
Range("A2").PasteSpecial Paste:=xlPasteColumnWidths '粘贴类型
ActiveSheet.Paste '实施粘贴
Application.CutCopyMode = False '取消复制模式
End Sub
如整行为空白则删除整行:
Sub DelRow()
Dim i As Integer, LastRow As Integer
LastRow = ActiveSheet.Cells.Special Cells(xlCellTypeLastCell).Row '把最后行的行号赋给变量
For i = LastRow To 1 Step -1 '倒循环
If Range("iv" & i).End(xlToLeft).Column = 1 And Range("a" & i) = "" Then
Range("a" & i).EntireRow.Delete '如整行为空白则删除整行
End If
Next i
End Sub
T = Application.GetOpenFilename("Text Files (*.dat), *.dat")选择文件保存路径
通过依次赋色给单元格的例子,展示简单的 On Error GoTo Line1 用法:
Sub Yjue() '过程名
Dim i As Integer '定义 i 为整型
On Error GoTo Line1 '遇到错误跳转到 Line1
For i = 0 To 65 '予设从 0 循环到 65
Cells(i + 1, 2).Interior.ColorIndex = i '依次赋色给第2列的单元格
Cells(i + 1, 1) = i '依次给第1列的单元格标上色索引号
Next i
Exit Sub '退出过程
Line1: '遇到错误跳转到这行继续执行
MsgBox "默认颜色只有 " & i - 1 & "种。" '提示对话框
End Sub '结束过程
通过显示或取消网格线,展示运算符“Not”应用的简单示例:
Dim myLine As Boolean '定义变量myLine为布尔型
With CommandButton1 'With语句结构
If .Caption = "取消网格线" Then '如按钮上显示为"取消网格线"
Caption = "显示网格线" '改按钮上的字幕为"显示网格线"
myLine = ActiveWindow.DisplayGridlines '把活动窗口当前网格线的显示状态赋给变量
ActiveWindow.DisplayGridlines = Not myLine '进行逻辑否定运算 Else
Caption = "取消网格线" '否则按钮上显示为"取消网格线"
ActiveWindow.DisplayGridlines = Not myLine '进行逻辑否定运算
End If
End With '结束With语句结构
ActiveCell.Offset(, -1).Name = "hzw" '定义名称
ActiveCell.Precedents.Address '被当前单元格所引用的区域地址
ActiveCell.Resize(0, 2).Select '选定当前单元格并向右延伸二格
Activesheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1 '显示自动筛选后的行数
二、定制模块行为
(1) Option Explicit '强制对模块内所有变量进行声明
Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示
Option Compare Text '字符串不区分大小写
Option Base 1 '指定数组的第一个下标为1
(2) On Error Resume Next '忽略错误继续执行VBA代码,避免出现错误消息
(3) On Error GoTo ErrorHandler '当错误发生时跳转到过程中的某个位置
(4) On Error GoTo 0 '恢复正常的错误提示
(5) Application.DisplayAlerts=False '在程序执行过程中使出现的警告框不显示
(6) Application.ScreenUpdating=False '关闭屏幕刷新
Application.ScreenUpdating=True '打开屏幕刷新
(7) Application.Enable.CancelKey=xlDisabled '禁用Ctrl+Break中止宏运行的功能
工作簿
(8) Workbooks.Add() '创建一个新的工作簿
(9) Workbooks(“book1.xls”).Activate '激活名为book1的工作簿
(10) ThisWorkbook.Save '保存工作簿
(11) ThisWorkbook.close '关闭当前工作簿
(12) ActiveWorkbook.Sheets.Count '获取活动工作薄中工作表数
(13) ActiveWorkbook.name '返回活动工作薄的名称
(14) ThisWorkbook.Name ‘返回当前工作簿名称
ThisWorkbook.FullName ‘返回当前工作簿路径和名称
(15) ActiveWindow.EnableResize=False ‘禁止调整活动工作簿的大小
(16) Application.Window.Arrange xlArrangeStyleTiled ‘将工作簿以平铺方式排列
(17) ActiveWorkbook.WindowState=xlMaximized ‘将当前工作簿最大化
工作表
(18) ActiveSheet.UsedRange.Rows.Count ‘当前工作表中已使用的行数
(19) Rows.Count ‘获取工作表的行数(注:考虑向前兼容性)
(20) Sheets(Sheet1).Name= “Sum” '将Sheet1命名为Sum
(21) ThisWorkbook.Sheets.Add Before:=Worksheets(1) '添加一个新工作表在第一工作表前
(22) ActiveSheet.Move After:=ActiveWorkbook. _
Sheets(ActiveWorkbook.Sheets.Count) '将当前工作表移至工作表的最后
(23) Worksheets(Array(“sheet1”,”sheet2”)).Select '同时选择工作表1和工作表2
(24) Sheets(“sheet1”).Delete或 Sheets(1).Delete '删除工作表1
(25) ActiveWorkbook.Sheets(i).Name '获取工作表i的名称
(26) ActiveWindow.DisplayGridlines=Not ActiveWindow.DisplayGridlines
'切换工作表中的网格线显示,这种方法也可以用在其它方面进行相互切换,即相当于开关按钮
(27) ActiveWindow.DisplayHeadings=Not ActiveWindow.DisplayHeadings
‘切换工作表中的行列边框显示
(28) ActiveSheet.UsedRange.FormatConditions.Delete ‘删除当前工作表中所有的条件格式
(29) Cells.Hyperlinks.Delete ‘取消当前工作表所有超链接
(30) ActiveSheet.PageSetup.Orientation=xlLandscape 或ActiveSheet.PageSetup.Orientation=2 '将页面设置更改为横向
(31) ActiveSheet.PageSetup.RightFooter=ActiveWorkbook.FullName ‘在页面设置的表尾中输入文件路径
ActiveSheet.PageSetup.LeftFooter=Application.UserName ‘将用户名放置在活动工作表的页脚
单元格/单元格区域
(32) ActiveCell.CurrentRegion.Select
或Range(ActiveCell.End(xlUp),ActiveCell.End(xlDown)).Select
'选择当前活动单元格所包含的范围,上下左右无空行
(33) Cells.Select ‘选定当前工作表的所有单元格
(34) Range(“A1”).ClearContents '清除活动工作表上单元格A1中的内容
Selection.ClearContents '清除选定区域内容
Range(“A1:D4”).Clear '彻底清除A1至D4单元格区域的内容,包括格式
(35) Cells.Clear '清除工作表中所有单元格的内容
(36) ActiveCell.Offset(1,0).Select '活动单元格下移一行,同理,可下移一列
(37) Range(“A1”).Offset(ColumnOffset:=1)或Range(“A1”).Offset(,1) ‘偏移一列
Range(“A1”).Offset(Rowoffset:=-1)或Range(“A1”).Offset(-1) ‘向上偏移一行
(38) Range(“A1”).Copy Range(“B1”) '复制单元格A1,粘贴到单元格B1中
Range(“A1:D8”).Copy Range(“F1”) '将单元格区域复制到单元格F1开始的区域中
Range(“A1:D8”).Cut Range(“F1”) '剪切单元格区域A1至D8,复制到单元格F1开始的区域中
Range(“A1”).CurrentRegion.Copy Sheets(“Sheet2”).Range(“A1”)
'复制包含A1的单元格区域到工作表2中以A1起始的单元格区域中
注:CurrentRegion属性等价于定位命令,由一个矩形单元格块组成,周围是一个或多个空行或列
本示例选定工作表 Sheet1 上的当前区域。
Worksheets("Sheet1").Activate
ActiveCell.CurrentRegion.Select
本示例假定在工作表 Sheet1
中有一个包含标题行的表。本示例选定该表,但不选定标题行。运行本示例之前,活动单元格必须处于该表中。
Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
tbl.Columns.Count).Select
(39) ActiveWindow.RangeSelection.Value=XX '将值XX输入到所选单元格区域中
(40) ActiveWindow.RangeSelection.Count '活动窗口中选择的单元格数
(41) Selection.Count '当前选中区域的单元格数
(42) GetAddress=Replace(Hyperlinkcell.Hyperlinks(1).Address,mailto:,””)
‘返回单元格中超级链接的地址并赋值
(43) TextColor=Range(“A1”).Font.ColorIndex ‘检查单元格A1的文本颜色并返回颜色索引
Range(“A1”).Interior.ColorIndex ‘获取单元格A1背景色
(44) cells.count ‘返回当前工作表的单元格数
(45) Selection.Range(“E4”).Select ‘激活当前活动单元格下方3行,向右4列的单元格
(46) Cells.Item(5,”C”) ‘引单元格C5
Cells.Item(5,3) ‘引单元格C5
三、结语
只有掌握好VBA的基础知识才能融会贯通,举一反三,VBA的基础知识对于初学者比较烦躁,万事开头难,只要有信心有毅力,一定可以把VBA学好