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

相关推荐
warm3snow6 小时前
AI 重塑产品管理工具:从 Jira 到智能体项目经理的终极演进
人工智能·ai·excel·项目管理·飞书·产品经理·jira·协同·tapd
LAM LAB11 天前
【VBA】Excel指定单元格范围内字体设置样式,处理导出课表单元格
excel·vba
在这habit之下11 天前
Keepalived学习总结
excel
Youngchatgpt12 天前
如何在 Excel 中使用 ChatGPT:自动化任务和编写公式
人工智能·chatgpt·自动化·excel
开开心心就好12 天前
安卓开源应用,超时提醒紧急人护独居安全
windows·决策树·计算机视觉·pdf·计算机外设·excel·动态规划
D_C_tyu12 天前
Vue3 + Element Plus | el-table 多级表头表格导出 Excel(含合并单元格、单元格居中)第二版
vue.js·elementui·excel
骆驼爱记录12 天前
WPS页码设置:第X页共Y-1页
自动化·word·excel·wps·新人首发
Cxiaomu13 天前
Python 文件解析: Excel / Word / PDF 的解析、处理、预览与下载
python·word·excel
2501_9307077813 天前
如何使用C#代码从 PDF 中提取表格并另存为Excel文件
pdf·excel