Excel 宏录制与VBA编程 ——VBA编程技巧篇三 (未初始化Range判断、遍历工作表方法、工作表多行重复内容剔除)

未初始化Range的判断

     有时候需要对已定义未初始化的range对象做判断

cpp 复制代码
dim curRange as range
If curRange Is Nothing Then
    debug.print("未初始化的..")
End If

 

遍历工作表方法

Chr(10):ASCII码中的换行键,相当于vbLF。

Chr(13):ASCII码中的回车键,相当于vbCR。

     1、使用For...Next 语句遍历工作簿中所有的工作表

cpp 复制代码
Sub ShCount1()
    Dim c As Integer
    Dim i As Integer
    Dim s As String
    c = Worksheets.Count
    For i = 1 To c
        s = s & Worksheets(i).Name & Chr(13)
    Next
    MsgBox "工作簿中含有以下工作表:" & Chr(13) & s
End Sub

 

     2、使用For Each...Next语句遍历工作簿中所有的工作表

cpp 复制代码
Sub ShCount2()
    Dim Sh As Worksheet
    Dim s As String
    For Each Sh In Worksheets
        s = s & Sh.Name & Chr(13)
    Next
    MsgBox "工作簿中含有以下工作表:" & Chr(13) & s
End Sub

 

工作表多行重复内容剔除

     将a列内容拷贝到b列:将重复内容删除掉后拷贝

 

cpp 复制代码
Sub RunTest2()

    ' 将b列清理掉
    Range("b:b").Clear

    ' 将标题头拷贝到b列
    Range("a1").Copy Destination:=Range("b1")

    ' 计算末尾行号
    Dim EndRowNum As Integer
    EndRowNum = Range("a1").End(xlDown).Row
    
    ' 由后向前循环遍历
    Dim Num As Integer
    For Num = 2 To EndRowNum Step 1
        If WorksheetFunction.CountIf(Columns(2), Cells(Num, 1).Value) < 1 Then
            Cells(Num, 1).Copy Destination:=Cells(Range("b65535").End(xlUp).Row + 1, 2)
        End If
    Next

End Sub

 

关注

笔者 - jxd

相关推荐
泡海椒17 小时前
JQuick-Excel dateFormat 转换实战:日期值与 FORMAT 显示格式的边界
开发语言·python·excel
2501_9336707919 小时前
2027风控策略岗秋招准备:SQL、Excel、建模的优先级与项目路径
人工智能·sql·excel
流形填表20 小时前
在线考试平台导入题库:Excel格式与字段对照
excel
Access开发易登软件2 天前
Access 导入 Markdown 表格:把文档里的数据写进表
前端·html·vba·markdown·access开发
开开心心就好2 天前
办公软件卸载不干净?专用工具一键清残留
java·前端·人工智能·智能手机·kafka·excel·memcache
全速向光2 天前
Excel函数系列09:公式又长又乱?LET+LAMBDA+MAP+REDUCE,自定义函数一次讲透
excel
鲲穹AI种草2 天前
办公表格批量处理:多款 Excel 工具能力客观记录
excel
开开心心就好2 天前
二维码批量生成导出工具,离线可用完全免费
java·前端·人工智能·智能手机·github·excel·visual studio
泡海椒2 天前
JQuick-Excel FORMAT 导出格式实战:日期、金额显示与 TRANSFORM 的边界
前端·python·excel
流形填表3 天前
题库迁移实战:Excel中间格式与列映射
python·excel