VBA操作单元格

offset

range 选区域

Sub shishi()
    Range("a1:a10").Select
End Sub

Sub shishi()
    Range("a1:f1").Select
End Sub

range 选单元格

Sub shishi()
    Range("a" & 4).Select
End Sub

值得一提的是这种方式下可以使用变量,比如可以与for循环当中的变量连用。

# 这种方式下也可以选中单元格,只不过不能与变量连用
Sub shishi()
    [a10].Select
End Sub

相对位置

offset(1,-2)的意思是下移一行,左移2列;

我们可以说,在张三后排的第三个人,单元格也是如此。我们可以精确的说某个单元格的位置,然后根据这个单元格的位置指定其它位置。

比如说我想选中A1单元格右边的一个单元格,但不能直接选中,我们在使用相对位置的时候通常都是和if连用,现在我们来对比一下。

sub shishi()
	dim i as integer
	for i = 2 to 10
		if range("a" & i) = "男" then
			range("b" & i) = "先生"
		else
			range("b" & i) = "女士"
		endif
	next
end sub
Sub shishi2()
    Dim i As Integer
    For i = 2 To 10
        If Range("b" & i).Offset(0, -1) = "男" Then
            Range("b" & i) = "男生"
        Else
            Range("b" & i) = "女士"
        End If
    Next
End Sub

Sub shishi3()
    Dim rng As Range
    For Each rng In Range("b2:b10")
        If rng.Offset(0, -1) = "男" Then
            rng = "先生"
        Else
            rng = "女士"
        End If
    Next
End Sub

END(XLUP)

当我们通过for删除某一列当中的空单元格时,会从下向上循环,但我们不得不猜一个数或精确知道一共有多少行,无法自动判断,而end(xlup)可以实现这种精确的判断。

Sub shishi()
    For i = 100 To 1 Step -1
        If Range("a" & i) = "" Then
            Range("a" & i).Select
            Selection.EntireRow.Delete
        End If
    Next
End Sub

就可以改进成为:

Sub shishi()
    For i = Range("a65536").End(xlUp).Row To 1 Step -1
        If Range("a" & i) = "" Then
            Range("a" & i).Select
            Selection.EntireRow.Delete
        End If
    Next
End Sub

end(xlup)的意思就是向最下也就是65536开始向上数,一直数到有字符的那一行,那就是你单元格的边界。

entirerow

这个比较简单,就是选中一整行。

# 选中
range("a8").entirerow.select

# 删除
range("a8").entirerow.delete

resize

选区之后合并居中,a10的resizw(2,1)就是把我当成基准,向下选择2行,一列,注意并不是向右选择一列,然后规定自己就是2行一列,然后合并,merge就是合并居中的意思

Sub shishi()
    Dim rng As Range
    For Each rng In Range("a10:e10")
        rng.Resize(2, 1).Merge
    Next
End Sub

copy

这一个更简单了,我们可以复制一个范围到某一个单元格,但实际效果为是将这个范围释放到以目标单元格为开始的范围,而不是全都放到目标单元格里面,当然最好的用法是复制范围有多少,目标范围就写多少。

range("a7:e7").copy range("a8")
range("a7").entirerow.copy range("a12")
Sub shishi()
    Range("a7:e7").Copy Range("a17:e17")
End Sub
原文地址:https://www.cnblogs.com/yizhangheka/p/14530792.html