VBA EXCEL删除行的方法

本文介绍了一种使用VBA批量删除Excel表格中指定范围内的行的方法,包括单行删除、连续多行删除及按特定间隔删除行等功能,并提供了详细的VBA代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

' Option Explicit
'
Const sheetName  As String = "电脑中心"



Private   Sub CommandButton1_Click() Sub CommandButton1_Click()
ActiveCell.EntireRow.Delete
End Sub


Private   Sub CommandButton2_Click() Sub CommandButton2_Click()
Dim minY
Dim maxY
minY 
= Selection.Row
maxY 
= Selection.Rows.Count + Selection.Row - 1

'从光标所在的行到另一个指定的行
'
ActiveWorkbook.Worksheets("sheetName").Range("A" & CStr(minY), "A" & CStr(maxY)).EntireRow.Delete
ActiveSheet.Range("A" & CStr(minY), "A" & CStr(maxY)).EntireRow.Delete
End Sub


Private   Sub CommandButton3_Click() Sub CommandButton3_Click()


'TextBox1.Text = ActiveCell.Row
TextBox1.Text = Selection.Row
TextBox2.Text 
= Selection.Rows.Count + Selection.Row - 1
End Sub


Private   Sub CommandButton4_Click() Sub CommandButton4_Click()
    
Dim r
    
Dim x, y
    r 
= TxtRow.Text
    
Dim i

'隔r行 删除一行
= Selection.Row
= Selection.Rows.Count + Selection.Row - 1
For i = x To y
    i 
= i + r - 1
   
' ActiveWorkbook.Worksheets("sheetName").Range("A" & i, "A" & i).EntireRow.Delete
    ActiveSheet.Range("A" & i, "A" & i).EntireRow.Delete
Next i
End Sub


精典之作:

''''''''''''''''''''''''''''''
'
'''''''''''''''''''''''''''''
'
'copy这里的代码
'
'1. 将宏的安全设置改为最低  Excel菜单-->工具-->宏-->安全
'
'2. 请将控制复制到所需的页面.
'
'3. 打开编辑器的设计模式
'
'4. 将各控制改名为代码相应的名字, 右击控件-->properties-->Name
'
'''---->a. 要删除的行数 控件名 TxtDel
'
'''---->b. 间隔行数 控件名 TxtRow
'
'''---->c. 起始行   控件名 TxtStart
'
'''---->d. 终止行   控件名 TxtEnd
'
'''---->e. 执行按钮 控件名 CBtnExecute
'
'5. 退出设计模式。OK了.
'
'''''''''''''''''''''''''''''
Private Sub CBtnExecute_Click()Sub CBtnExecute_Click()
    
Dim r
    
Dim x, y
    
Dim i
    
Dim d
    r 
= TxtRow.Text
    
'隔r行 删除d行 输入 行号--行号
= TxtDel.Text - 1
= TxtStart.Text + CInt(r)
= TxtEnd.Text
For i = x To y Step r
   
' ActiveWorkbook.Worksheets("sheetName").Range("A" & i, "A" & i).EntireRow.Delete
    ActiveSheet.Range("A" & i, "A" & i + d).EntireRow.Delete
Next i
End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''

http://txw100.com/ 

转载于:https://www.cnblogs.com/wj-wangjun/archive/2007/09/08/886794.html

<think>好的,我现在需要帮助用户解决如何用VBA删除Excel中的空的问题。首先,我得回忆一下用户提供的引用内容,特别是引用[2]和引用[4],因为它们提到了VBA删除方法。引用[2]中提到了使用EntireRow.Delete来删除,而引用[4]则讨论了删除单元格时的参数,但可能适用于整的情况。 用户的问题是关于删除空白,所以我要考虑如何检测空删除它们。常见的做法是遍历每一,检查是否为空,然后删除。不过,遍历时需要注意从下往上处理,因为删除会导致上面的下移,如果从上往下遍历可能会跳过一些。 接下来,我需要确定如何判断一是否为空。通常可以通过检查每个单元格的值,如果所有单元格都为空,则该为空。或者,可以使用WorksheetFunction.CountA方法,统计非空单元格的数量,如果为0则是空。 然后,参考引用[2]中的示例代码,使用Range("B3").EntireRow.Delete,这可以删除。所以,在代码中,找到空后,使用EntireRow.Delete方法。 另外,用户可能需要一个高效的代码,因为处理大量数据时,逐检查可能较慢。可以考虑使用SpecialCells(xlCellTypeBlanks)来快速定位空,但需要确认是否适用,因为如果某部分单元格为空可能不会被选中。或者,使用Union方法将多个空合并为一个范围,一次性删除,提高效率。 还需要注意,用户可能不希望弹出提示或屏幕刷新,所以应该关闭Application.ScreenUpdating和Application.DisplayAlerts,处理完后再恢复。 现在,综合这些信息,我应该给出两种方法:一种是遍历从下往上逐删除,另一种是定位所有空后批量删除。同时,要提醒用户备份数据,以免误删。 最后,生成相关问题,可能需要涉及性能优化、处理部分空的情况,或者与其他方法比较,比如使用Excel内置功能删除。</think>以下是使用VBA删除Excel的详细方法和示例代码: ### 方法一:逐检测删除法(推荐) ```vba Sub DeleteEmptyRows() Application.ScreenUpdating = False Dim lastRow As Long, i As Long lastRow = Cells(Rows.Count, 1).End(xlUp).Row For i = lastRow To 1 Step -1 If WorksheetFunction.CountA(Rows(i)) = 0 Then Rows(i).EntireRow.Delete End If Next i Application.ScreenUpdating = True End Sub ``` **代码说明**: 1. 从最后一向上遍历(避免删除导致的号变化问题) 2. 使用`CountA`函数统计内非空单元格数量 3. 当统计结果为0时,执删除操作[^2] 4. 禁用屏幕更新提升执效率[^3] ### 方法二:定位空批量删除法 ```vba Sub DeleteBlankRowsAdvanced() On Error Resume Next Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete On Error GoTo 0 End Sub ``` **代码说明**: 1. 使用`SpecialCells(xlCellTypeBlanks)`定位空单元格[^4] 2. 通过列定位空(示例使用A列作为基准列) 3. 批量删除包含空单元格的整 ### 注意事项 1. 建议先备份数据再执操作 2. 删除操作不可撤销,建议测试时使用副本 3. 整删除后下方单元格会自动上移 4. 处理前关闭其他Excel进程提升运速度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值