VBA 删除整列代码怎么弄,我码的不对啊
发布网友
发布时间:2022-05-08 16:06
我来回答
共3个回答
热心网友
时间:2024-01-25 20:09
你测试的数据应该是比如1到5都有数据;
你程序设定的Hx的初始值是1,
第一次折行时Max = Cells(Rows.Count, HX).End(xlUp).Row,由于第一列有数据,你取得最大行数比如5,即max=5,因为不等于1所以直接执行清除数据操作;
第二次执行时,由于第一列数据已经被清除,所以max=1,执行If Max = 1 Then
HX = HX + 1
Max = Cells(Rows.Count, HX).End(xlUp).Row
End If
hx变成2了,所以第二列也可以删除,
第三次执行时,第一第二列全空。max一直为1,所以不能再清除第三列以后的数据追问那请问如何修改呢?
追答我是就事论事你的程序;
Sub a32()
maxhx = ActiveSheet.UsedRange.Rows.Count
maxlx = ActiveSheet.UsedRange.Columns.Count
If maxhx = 1 And maxlx = 1 Then Exit Sub
ActiveSheet.UsedRange.Columns(1).Clear
End Sub
为什么要一列一列的删除内容?
如果要删除所有内容,直接用cells.clear就ok了。
热心网友
时间:2024-01-25 20:09
Sub a32()
Dim Hx, Max As Long
Do
Hx = Hx + 1
Max = Cells(Rows.Count, Hx).End(xlUp).Row
Loop Until Max > 1 Or Hx > Columns.Count
' Hx>columns.count 是判断Hx是否大于总列数,即如果全部数据被清空时退出DO循环
'没有这个条件如果max始终<1 时 进入死循环
If Max > 1 Then Sheet1.Range(Cells(1, Hx), Cells(Max, Hx)).Clear
End Sub
热心网友
时间:2024-01-25 20:10
Sub a32()
Dim hx%, i%, max%
For hx = UsedRange.Column To UsedRange.Column + UsedRange.Columns.Count - 1
max = Cells(Rows.Count, hx).End(xlUp).Row
If max <> 1 And Not (Cells(hx, 1) Is Nothing) Then Exit For
Next hx
For i = 1 To max
Sheet1.Cells(i, hx).Clear
Next i
End Sub
前面找哪列空白,得用循环,否则只能找到第二列,后面就找不到了。
后面得每个单元格清除,用循环是对的。也可以改变为整列清除或整个有内容的区域的清除,这样就不用循环,以提高效率。实际上UsedRange.Column 就是第一个非空白列。
只要如下程序即可:
Sub a33()
Columns(UsedRange.Column).Clear
End Sub