◆Excel VBA ◆单元格引用代码收集
(2018-03-13 14:39:43)分类: ◆VBA |
◆单元格引用代码收集
━━━━━━━━━━━━━━━━━━━━━━━━━━
几种用VBA在单元格输入数据的方法:
最简单在"[ ] " 中输入单元格名称。
1[A1] = 100 '在 A1 单元格输入100。
2 [A2:A4] = 10 '在 A2:A4 单元格输入10。
采用 Range(" "), " " 中输入单元格名称。
3Range("B1") = 200 '在 B1 单元格输入200。
4 Range("C1:C3") = 300 '在 C1:C3 单元格输入300。
采用 Cells(Row,Column),Row是单元格行数,Column是单元格栏数。
5Cells(1, 4) = 400 '在 D1 单元格输入400。
6 Range(Cells(1, 5), Cells(5, 5)) = 50 '在 E1:E 5单元格输入50。
━━━━━━━━━━━━━━━━━━━━━━━━━━
一.Range属性
1.选择单个单元格(例如A5)
Range("A5").Select
2.选择一个单元格区域(例如A6:A10)
Range("A6:A10").Select
3.选择一些不相邻的单元格(例如A1,B6,C8)
Range("A1,B6,C8").Select
4.选择一些不相邻的单元格和单元格区域(例如A11:D11,B7,C9)
Range("A11:D11,B7,C9").Select
二.Cells属性
1.选择单个单元格(例如A5)
Cells(5,1).Select
Cells(5,A).Select
2.选择一个单元格区域(例如A6:A10)
Range(Cells(6,1),Cells(10,1)).Select
3.选择工作表中的所有单元格
Cells.Select
三.Offset属性
1.选择单元格A1下面一行和右边三列的单元格
Range("A1").Offset(1,3).Select
2.选择单元格D15上面两行和左边一列的单元格
Range("D15").Offset( - 2, - 1).Select
3.选择同列单元格(上一行)
ActiveCell.Offset( - 1,0).Select
━━━━━━━━━━━━━━━━━━━━━━━━━━
[A65536].End(xlUp).Row 'A列末行向上第一个有值的行数
[A1].End(xlDown).Row 'A列首行向下第一个有值之行数
[IV1].End(xlToLeft).Column '第一行末列向左第一列有数值之列数。
[A1].End(xlToRight).Column '第一行首列向右有连续值的末列之列数
Sheets(i).Columns("A:K").AutoFit '把每个工作表的[A:K]列调整为最佳列宽
━━━━━━━━━━━━━━━━━━━━━━━━━
ExcelVBA Range对象基本操作应用示例
━━━━━━━━━━━━━━━━━━━━━━━━━
[示例01]赋值给某单元格
[示例01 - 01]
Sub test1()
Worksheets("Sheet1").Range("A5").Value = 22
MsgBox "工作表Sheet1内单元格A5中的值为" _
& Worksheets("Sheet1").Range("A5").Value
EndSub
[ 示例01 - 02]
Sub test2()
Worksheets("Sheet1").Range("A1").Value = _
Worksheets("Sheet1").Range("A5").Value
MsgBox "现在A1单元格中的值也为" & _
Worksheets("Sheet1").Range("A5").Value
EndSub
[ 示例01 - 03]
Sub test3()
MsgBox "用公式填充单元格,本例为随机数公式"
Range("A1:H8").Formula = "=Rand()"
EndSub
[ 示例01 - 04]
Sub test4()
Worksheets(1).Cells(1, 1).Value = 24
MsgBox "现在单元格A1的值为24"
EndSub
[ 示例01 - 05]
Sub test5()
MsgBox "给单元格设置公式,求B2至B5单元格区域之和"
ActiveSheet.Cells(2, 1).Formula = "=Sum(B1:B5)"
EndSub
[ 示例01 - 06]
Sub test6()
MsgBox "设置单元格C5中的公式."
Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()"
EndSub
——————————
[示例02]引用单元格
Sub Random()
Dim myRange As Range
'设置对单元格区域的引用
Set myRange = Worksheets("Sheet1").Range("A1:D5")
'对Range对象进行操作
myRange.Formula = "=RAND()"
myRange.Font.Bold = True
EndSub
示例说明:可以设置Range对象变量来引用单元格区域,然后对该变量所代表的单元格区域进行操作。
——————————
[示例03]清除单元格
[示例03 - 01]清除单元格中的内容(ClearContents方法)
Sub testClearContents()
MsgBox "清除指定单元格区域中的内容"
Worksheets(1).Range("A1:H8").ClearContents
EndSub
[ 示例03 -
02]清除单元格中的格式(ClearFormats方法)
Sub testClearFormats()
MsgBox "清除指定单元格区域中的格式"
Worksheets(1).Range("A1:H8").ClearFormats
EndSub
[ 示例03 -
03]清除单元格中的批注(ClearComments方法)
Sub testClearComments()
MsgBox "清除指定单元格区域中的批注"
Worksheets(1).Range("A1:H8").ClearComments
EndSub
[ 示例03 -
04]清除单元格中的全部,包括内容、格式和批注(Clear方法)
Sub testClear()
MsgBox "彻底清除指定单元格区域"
Worksheets(1).Range("A1:H8").Clear
EndSub
——————————
[示例04]Range和Cells
Sub test()
'设置单元格区域A1:J10的边框线条样式
With Worksheets(1)
. Range(.Cells(1, 1),.Cells(10, 10)).Borders.LineStyle = xlThick
End With
EndSub
示例说明:可用 Range(cell1, cell2) 返回一个 Range 对象,其中cell1和cell2为指定起始和终止位置的Range对象。
——————————
[示例05]选取单元格区域(Select方法)
Sub testSelect()
'选取单元格区域A1:D5
Worksheets("Sheet1").Range("A1:D5").Select
EndSub
——————————
[示例06]基于所选区域偏离至另一区域(Offset属性)
[示例06 - 01]
Sub testOffset()
Worksheets("Sheet1").Activate
Selection.Offset(3, 1).Select
EndSub
示例说明:可用Offset(row, column)(其中row和column为行偏移量和列偏移量)返回相对于另一区域在指定偏移量处的区域。如上例选定位于当前选定区域左上角单元格的向下三行且向右一列处单元格区域。
[示例06 - 02]选取距当前单元格指定行数和列数的单元格
Sub ActiveCellOffice()
MsgBox "显示距当前单元格第3列、第2行的单元格中的值"
MsgBox ActiveCell.Offset(3, 2).Value
EndSub
——————————
[示例07]调整区域的大小(Resize属性)
Sub ResizeRange()
Dim numRows As Integer, numcolumns As Integer
Worksheets("Sheet1").Activate
numRows = Selection.Rows.Count
numcolumns = Selection.Columns.Count
Selection.Resize(numRows + 1, numcolumns + 1).Select
EndSub
示例说明:本示例调整所选区域的大小,使之增加一行一列。
——————————
[示例08]选取多个区域(Union方法)
Sub testUnion()
Dim rng1 As Range, rng2 As Range, myMultiAreaRange As Range
Worksheets("sheet1").Activate
Set rng1 = Range("A1:B2")
Set rng2 = Range("C3:D4")
Set myMultiAreaRange = Union(rng1, rng2)
myMultiAreaRange.Select
EndSub
示例说明:可用 Union(range1, range2, ...) 返回多块区域,即该区域由两个或多个连续的单元格区域所组成。如上例创建由单元格区域A1:B2和C3:D4组合定义的对象,然后选定该定义区域。
——————————
[示例09]激活已选区域中的单元格
Sub ActivateRange()
MsgBox "选取单元格区域B2:D6并将C4选中"
ActiveSheet.Range("B3:D6").Select
Range("C5").Activate
EndSub
——————————
[示例10]选取指定条件的单元格(SpecialCells方法)
Sub SelectSpecialCells()
MsgBox "选择当前工作表中所有公式单元格"
ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas).Select
EndSub
——————————
[示例11]选取矩形区域(CurrentRegion属性)
'选取包含当前单元格的矩形区域
'该区域周边为空白行和空白列
Sub SelectCurrentRegion()
MsgBox "选取包含当前单元格的矩形区域"
ActiveCell.CurrentRegion.Select
EndSub
——————————
[示例12]选取当前工作表中已用单元格(UsedRange属性)
'选取当前工作表中已使用的单元格区域
Sub SelectUsedRange()
MsgBox "选取当前工作表中已使用的单元格区域" _
& vbCrLf & "并显示其地址"
ActiveSheet.UsedRange.Select
MsgBox ActiveSheet.UsedRange.Address
EndSub
——————————
[示例13]选取最边缘单元格(End属性)
'选取最下方的单元格
Sub SelectEndCell()
MsgBox "选取当前单元格区域内最下方的单元格"
ActiveCell.End(xlDown).Select
EndSub
示例说明:可以改变参数xlDown以选取最左边、最右边、最上方的单元格。
——————————
[示例14]设置当前单元格的前一个单元格和后一个单元格的值
Sub SetCellValue()
MsgBox "将当前单元格中前面的单元格值设为 " "我前面的单元格 " " " & vbCrLf _
& "后面的单元格值设为 " "我后面的单元格 " " "
ActiveCell.Previous.Value = "我前面的单元格"
ActiveCell.Next.Value = "我后面的单元格"
EndSub
——————————
[示例15]确认所选单元格区域中是否有公式(HasFormula属性)
Sub IfHasFormula()
If Selection.HasFormula = True Then
MsgBox "所选单元格中都有公式"
Else
━━━━━━━━━━━━━━━━━━━━━━━━━━
几种用VBA在单元格输入数据的方法:
最简单在
1
3
5
一.Range属性
1.选择单个单元格(例如A5)
Range("A5").Select
2.选择一个单元格区域(例如A6:A10)
Range("A6:A10").Select
3.选择一些不相邻的单元格(例如A1,B6,C8)
Range("A1,B6,C8").Select
4.选择一些不相邻的单元格和单元格区域(例如A11:D11,B7,C9)
Range("A11:D11,B7,C9").Select
二.Cells属性
1.选择单个单元格(例如A5)
Cells(5,1).Select
Cells(5,A).Select
2.选择一个单元格区域(例如A6:A10)
Range(Cells(6,1),Cells(10,1)).Select
3.选择工作表中的所有单元格
Cells.Select
三.Offset属性
1.选择单元格A1下面一行和右边三列的单元格
Range("A1").Offset(1,3).Select
2.选择单元格D15上面两行和左边一列的单元格
Range("D15").Offset( - 2, - 1).Select
3.选择同列单元格(上一行)
ActiveCell.Offset( - 1,0).Select
━━━━━━━━━━━━━━━━━━━━━━━━━━
[A65536].End(xlUp).Row
[A1].End(xlDown).Row
[IV1].End(xlToLeft).Column
[A1].End(xlToRight).Column
Sheets(i).Columns("A:K").AutoFit
━━━━━━━━━━━━━━━━━━━━━━━━━
Excel
━━━━━━━━━━━━━━━━━━━━━━━━━
[示例01]
[示例01 - 01]
Sub
&
End
[
Sub
Worksheets("Sheet1").Range("A5").Value
Worksheets("Sheet1").Range("A5").Value
End
[
Sub
End
[
Sub
End
[
Sub
End
[
Sub
End
[示例02]
Sub
End
——————————
[示例03]
[示例03 - 01]清除单元格中的内容(ClearContents方法)
Sub
End
[
Sub
End
[
Sub
End
[
Sub
End
[示例04]
Sub
End
——————————
[示例05]
Sub
End
[示例06]
[示例06 - 01]
Sub
End
[示例06 - 02]
Sub
End
[示例07]
Sub
End
——————————
[示例08]
Sub
End
——————————
[示例09]
Sub
End
[示例10]
Sub
End
[示例11]
'选取包含当前单元格的矩形区域
'该区域周边为空白行和空白列
Sub
End
[示例12]
'选取当前工作表中已使用的单元格区域
Sub
&
End
[示例13]
'选取最下方的单元格
Sub
End
——————————
[示例14]设置当前单元格的前一个单元格和后一个单元格的值
Sub
&
End
[示例15]确认所选单元格区域中是否有公式(HasFormula属性)
Sub