zoukankan      html  css  js  c++  java
  • 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
    日本的医保制度
    贫困与抑郁、焦虑之间的联系与机制
    opencv实战-识别信用卡
    pandas常用命令-学习整理
    kubernates部署(二进制包部署方式)
    kubernates部署(kubeadm 部署方式)
    MySQL的锁机制
    Unity UI适配 之 GridLayoutGroup组件下的内容适配(进度条适配)
  • 原文地址:https://www.cnblogs.com/yizhangheka/p/14530792.html
Copyright © 2011-2022 走看看