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

posted @ 2020-05-24 11:52  天涯海角路  阅读(1091)  评论(0编辑  收藏  举报