VBA-对象-Range
excel最大行列数总结:
在 Excel 2010 和 Excel 2007 中,工作表的大小为 16,384 列 × 1,048,576 行
在 Excel 97-2003 中,工作表的大小为 256 列 × 65,536 行。
超出最大行列数单元格中的数据将会丢失。
Excel2003版最大行数是65536行。Excel2007开始的版本最大行数是1048576行。
Excel2003的最大列数是256列,2007以上版本是16384列。
----------------------------------------------------------------
范围指定
速度最快的的是 Cells(1,1) ,其次是 Range("A1"), 最慢是 [A1]
用 Range(cell1, cell2) 返回一个 Range 对象
Worksheets("Sheet2").Activate
Worksheets("Sheet2").Range("D4").Value = "Excel VBA"
Worksheets("Sheet2").Cells(5, 5).Value = "Excel VBA"
Set sht = Worksheets("Parameter")
Set rng = sht.Range("B2:C20")
Range("A3:D5").Value = "Excel VBA入门"
Range("A3", "D5").Value = "Excel VBA入门"
Cells( i , 2 )
Cells( i , "B")
Range("a1", "c5") 选择A1到C5单元格
Range("a1: c5") 选择A1到C5单元格
Range("a1: c5,e5:g6")选择A1到C5单元格和E5到G6两个不连续的区域
Range("1:1")选择第一行
Range("a:a")选择第A列
arr = Sheet2.UsedRange
For i = 1 To UBound(arr)
For j = 1 To UBound(arr, 2)
arr(i, j)
Next
Next
------------------------------------------------------------
选择非空单元格
选择a到f列的非空单元格
Range("a1", Range("f1").End(xlDown))
这个返回的是行号:是连续使用的行号,如果中间空行,则只算中断前的这部分
Range("f1").End(xlDown)
Range(Range("A1"), Range("A100").End(xlUp))
end(xlup),这个表示的是a100往上的非空单元格
从后往前数,才能找到最后一行使用的单元格
usedRows = Worksheets("").Range("A1048576").End(xlUp).Row
选择全部数据
Sub rangeTest()
Dim endNumber As Integer
endNumber = Application.WorksheetFunction.CountA(Sheet1.Range("a:a"))
Range("a1", Range("a" & endNumber).End(xlToRight)).Select
End Sub
使用过的范围
所有表格的行总数activesheet.cells.rows.count
使用过的: activesheet.usedrange.raws.count
xlDown
xlToRight
xlToLeft
xlUp
-------------------------------------------------------------
offset
offset(|A| , |B|) : 以选择单元格为起点,向下挪移A个单元格,向右挪移B个单元格。
offset(-|A| , -|B|) : 以选择单元格为起点,向上挪移A个单元格,想左挪移B个单元格。
Range("a1").End(xlDown).Offset(1, 0).Select
-------------------------------------------------------------
行列插入
rows(2).insert shift:=xlup 在第二行处插入一行
复制并插入
ActiveSheet.Rows(1).Copy
ActiveSheet.Rows(2).Insert Shift:=xlDown
隔行插入
For i = 1 To 20
Cells(1, 2 * i).Select
Selection.EntireColumn.Insert
Next i
隔列插入
For i = 1 To 10
Cells(2 * i, 1).Select
Selection.EntireRow.Insert
Next i
-------------------------------------------------------------
行选择
Range("B2:D3").EntireRow.Value = "Excel VBA"
Range("B2:D3").EntireRow.Interior.ThemeColor = 5
Range("A2").EntireRow.Hidden = True
Range("A4").EntireRow.Value = "Excel VBA"
Range.rows(n)得到一个新的range对象,代表位于该区域第n行的所有单元格。
.count 最后一行的行号
-------------------------------------------------------------
列选择
Range("B2:D3").EntireColumn.Value = "Excel VBA"
Range("B2:D3").EntireColumn.Interior.ThemeColor = 5
Range("A2").EntireColumn.Hidden = True
Range("A4").EntireColumn.Value = "Excel VBA"
range.columns(n)得到一个新的range对象。代表位于该区域第n列的所有单元格。
-------------------------------------------------------------
删除行列
Delete 参数Shift,值xlShiftToLeft向左移动 xlShiftUp向上移动
行数等于列数,剩余表格向上移动
Range(Cells(1, 2), Cells(3, 4)).Delete
行数大于列数,剩余表格向左移动
Range("C1:D2").Delete
Range(Cells(1, 2), Cells(3, 4)).EntireRow.Delete
Range(Cells(1, 2), Cells(3, 4)).EntireColumn.Delete
Rows(k).Delete
-------------------------------------------------------------
内容清除
清除所有设置
Range(Cells(1, 2), Cells(3, 4)).Clear
清除表格内容其余不变
Range("A1:D4").ClearContents
清除所有单元格内容
Worksheets("Sheet2").Cells.ClearContents
清除注释
Worksheets("Sheet2").Cells.ClearComments
清除表格的格式
Range("A1:D4").ClearFormats
当前工作表的所有组合
Cells.ClearOutline
-------------------------------------------------------------
复制粘贴
Range(Cells(1, 2), Cells(3, 4)).Copy Destination:=Cells(5, 6)
Range("B1:D3").Copy Destination:=Range("F5")
ActiveSheet.Range("B1:D3").Copy Destination:=Range("F5")
Worksheets("Sheet1").Range("B1:D3").Copy Destination:=Worksheets("Sheet2").Range("F5")
Range(Cells(1, 2), Cells(3, 4)).Cut Destination:=Cells(5, 6)
Range("B1:D3").Cut Destination:=Range("F5")
ActiveSheet.Range("B1:D3").Cut Destination:=Range("F5")
Worksheets("Sheet1").Range("B1:D3").Cut Destination:=Worksheets("Sheet2").Range("F5")
Range("a1").Copy Range("a2") 复制A1单元格的数据到A2
-------------------------------------------------------------
Validation
With Range("A1:A20").Validation
.Delete ' 删除现在的有效数据设置
' 设置新的有效数据数据(男,或者女)
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="男,女"
.InCellDropdown = True ' 显示下拉框
.ShowError = True ' 提示输入错误
.IgnoreBlank = True ' 空白可
End With
With Range("B2").Validation
.Delete ' 删除现在的有效数据设置
' 设置新的有效数据数据(18-60之内的数字)
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="18", Formula2:="60"
.InCellDropdown = False ' 隐藏下拉框
.ShowError = True ' 提示输入错误
.IgnoreBlank = True ' 空白可
End With
-------------------------------------------------------------
边框样式(录个宏就知道了)
rng.Borders.LineStyle = xlContinuous
xlContinuous代表着一种默认的Excel边框风格,除了直接用各种风格的名字外,也可以使用对应的值来代替。 设置边框格式,实线、细线,默认颜色为黑色
注意:
通过上网查资料,ColorIndex有56个,是内置的一些颜色值。
如果设置Color的值为RGB,再取它的ColorIndex得到的值可能就不准确了。经过测试,会返回一个较为接近的ColorIndex
所以,想准确取颜色还是使用Color而不是ColorIndex
边框颜色
rng.Borders.ColorIndex = 3
rng.Borders.Color = RGB(0, 255, 0)
边框宽度
rng.Borders.Weight = xlThick
区域的底边框
rng.Borders(xlEdgeBottom).LineStyle = xlContinuous
所有单元格底线:
rng.Borders(xlInsideHorizontal).LineStyle = xlContinuous
表格的宽度
Worksheets("Sheet2").Range("D4").ColumnWidth = 20
表格的高度
Worksheets("Sheet2").Range("D4").RowHeight = 30
文字颜色
Worksheets("Sheet2").Range("D4").Font.ColorIndex = 3
背景颜色
Worksheets("Sheet2").Range("D4").Interior.ColorIndex = 4
With Worksheets("Sheet2")
.Activate
With .Range("D4")
.Value = "Excel VBA"
.ColumnWidth = 20
.RowHeight = 30
.Font.ColorIndex = 3
.Interior.ColorIndex = 4
End With
End With
增加边框线Range("A1:B11").Borders.LineStyle=1
取消边框线 Range("A1:B11").Borders.LineStyle=0
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)//为左边上边框。
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)//为上边上边框。
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)//为下边上边框。
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)//为右边边上边框。
.LineStyle = xlContinuous 常规的实线、细线
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Range对象的Borders设置单元格区域的内部线框
BorderAround分别可以设置单元格外部边框。
--------------------------------------------------------------------
设置字体字号
Public Sub 4_144()
Dim myRange As Range
Dim myFont As Font
Set myRange = Range("A1") '指定任意的单元格区域
Set myFont = myRange.Font
Cells.Clear '清除工作表数据
myRange.Value = "ExcelVBA实用技巧大全"
With myFont
.Name = "华文新魏"
.Size = 15
.Bold = True
.Italic = True
.ColorIndex = 3
End With
Set myFont = Nothing
Set myRange = Nothing
End Sub
————————————————
版权声明:本文为CSDN博主「weixin_42108319」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42108319/article/details/99827876