VBA即用型代码手册:根据预定义的文本条件删除行

VBA语言専攻 2024-07-10 18:48:44

我给VBA下的定义:VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率,而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。

作为我的学员要利用我的积木编程思想,积木编程最重要的是积木如何搭建及拥有积木。在九套教程中我给出了大量的积木,同时讲解了如何搭建。为了让学员拥有更多的积木,我开始着手这部《VBA即用型代码手册(汉英)》的创作,这部手册约600页,集合约500多个的案例,案例我用汉语和英语同时发布,一方面学员从中可以更好的领会和掌握VBA中用到的一些英语知识,另一方面,大家可以看到各种各样的积木。这部手册是大家学习和工作中的不可多得的实用资料。今日的内容是:VBA即用型代码手册:根据预定义的文本条件删除行

【分享成果,随喜正能量】每一个在你的生命里出现的人,都有原因,喜欢你的人给了你温暖和勇气,你喜欢的人让你学会了爱和自持,你不喜欢的人教会你宽容与尊重,不喜欢你的人让你自省与成长。。

第四章 工作表代码

Worksheet Codes

20 根据预定义的文本条件删除行Delete Rows Based on Predefined Textual Criteria

此宏将允许您指定某些条件,然后根据该条件删除行。您将选择要删除行的列和工作表;然后,您将选择要查找的内容以删除行,如果这些关键字存在于单元格中,将导致该行被删除。

This macro will allow you to specify certain criteria and then to delete rows based upon that criteria. You will choose the Row, Column, and Sheet where you want to delete the rows; then you will select what you want to look for to delete a row - you type in keywords, which, if present in a cell, will cause that row to be deleted.

Sub mynzDelete_Based_on_Criteria()

'此宏将根据预定义字符或一组字符的存在情况删除整行。

'如果该字符或字符集在单元格中的指定列中,则整行将被删除

Dim X As Long

Dim Z As Long

Dim LastRow As Long

Dim FoundRowToDelete As Boolean

Dim OriginalCalculationMode As Long

Dim RowsToDelete As Range

Dim SearchItems() As String

Dim DataStartRow As Long

Dim SearchColumn As String

Dim SheetName As String

' 选择要开始搜索和删除的行

' 选择要搜索和删除的列以用于删除

' 在工作簿中选择运行此宏的工作表

DataStartRow = 1

SearchColumn = "A"

SheetName = "Sheet4"

'输入要用于删除条件的字符,要区分大小写,需要用逗号分隔

SearchItems = Split("AD,AR", ",")

On Error GoTo Whoops

OriginalCalculationMode = Application.Calculation

Application.Calculation = xlCalculationManual

Application.ScreenUpdating = False

With Worksheets(SheetName)

LastRow = .Cells(.Rows.Count, SearchColumn).End(xlUp).Row

For X = LastRow To DataStartRow Step -1

FoundRowToDelete = False

For Z = 0 To UBound(SearchItems)

If InStr(.Cells(X, SearchColumn).Value, SearchItems(Z)) Then

FoundRowToDelete = True

Exit For

End If

Next

If FoundRowToDelete Then

If RowsToDelete Is Nothing Then

Set RowsToDelete = .Cells(X, SearchColumn)

Else

Set RowsToDelete = Union(RowsToDelete, .Cells(X, SearchColumn))

End If

If RowsToDelete.Areas.Count > 100 Then

RowsToDelete.EntireRow.Delete

Set RowsToDelete = Nothing

End If

End If

Next

End With

If Not RowsToDelete Is Nothing Then

RowsToDelete.EntireRow.Delete

End If

Whoops:

Application.Calculation = OriginalCalculationMode

Application.ScreenUpdating = True

End Sub

本节内容参考程序文件:Chapter04-2.xlsm

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

0 阅读:3