帮我解释下下面一段EXCEL的vba代码的意思,还有运行时是怎样的一个过程?

Dim rg As Range, i As Integer
For i = 2 To Range("c65536").End(xlUp).Row
If Cells(i, 7) = 0 Then
If rg Is Nothing Then
Set rg = Rows(i)
Else
Set rg = Union(rg, Rows(i))
End If
End If
Next i
rg.Delete

这个代码是把C列空单元格所在行删除的代码
Dim rg As Range, i As Integer ‘定义rg和i的变量类型
For i = 2 To Range("c65536").End(xlUp).Row '设定Range("c65536").End(xlUp).Row是指从单元格C65535往上查询到的第一个非空单元格所在行的行号,在EXCEL2003里面C65535是C列最后一个单元格,这一句是定义循环的次数
If Cells(i, 7) = 0 Then ‘如果第i行第7列所在单元格等于0,那么
If rg Is Nothing Then ’如果rg未赋值,那么
Set rg = Rows(i) ‘rg等于第i行
Else ’否则
Set rg = Union(rg, Rows(i)) ‘rg等于之前所赋值,加上第i行
End If
End If
Next i
rg.Delete ’把rg所指的范围删除

运行时的过程是这样的
1、假设C列最后一个非空单元格为C10,则循环9次,即FOR I=2 TO 9
2、假设C3,C5是空的,rg等于第3行和第五行的所在行
3、最后把第三行和第五行删除
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-24
从第2行起到C列最后一个有数值或公式的单元格所在行止,删除G列为0的行。
程序设置了一个range对象变量rg和一个整型变量i(这里有一个限制,i必须不大于32767,i As long就没有这个限制了)。
i从2开始到C列最后一个有数值或公式的单元格所在行为止,以步长为1,作循环。判断该行G列,若数值为0,则把该行放入rg对象集合中。循环结束后,删除rg对象。
第2个回答  2013-08-24
删除G列中数据为0的单元格对应的行

这段代码里面是以C列为计数,以G列为判断条件

运行之后,所有C列有数据的行同时对应的G列的数值为0的行,将会被删除追问

为什么 我 按原来代码中的 For i = 2 To Range("c65536").End(xlUp).Row 运行,就提示错误

把它改为 For i = 1 To Range("c65536").End(xlUp).Row 就能运行成功,能帮我解释是什么原因吗?

追答

没可能吧,改为1之后一样也要经过 i = 2的情况,前面运行错误应该不是这样原因,是有其它原因。
对了,提示什么错误呢?

追问

C行有空格就不能运行,提示错误,原来的代码应该如何修改,C行出现空格的话,也删除这一行,能不能把修改好的代码贴出来,谢谢

追答

改成这样,
Dim rg As Range, i As Integer
For i = 2 To Range("c65536").End(xlUp).Row
If Cells(i, 7) = 0 or cells(i,3) = "" Then
If rg Is Nothing Then
Set rg = Rows(i)
Else
Set rg = Union(rg, Rows(i))
End If
End If
Next i
rg.Delete

本回答被提问者采纳
第3个回答  2013-08-24
Range("c65536").End(xlUp).Row 这个值是1,
for i=2 to 1,这个循环就直接跳过了
所以,rg没有被赋值,rg is nothing
所以rg.delete报错

如果要使这个程序能运行,应该在C列,65536行上面的行有值,并且应该定义 dim i as long ,否则interger会溢出追问

C行有空格就不能运行,提示错误,原来的代码应该如何修改,C行出现空格的话,也删除这一行,能不能把修改好的代码贴出来,谢谢

第4个回答  2013-08-24
你将代码放到你的vB模块中按F8就会你按一次他运行一句,你再看你的工作表有什么变化就知道是怎么运行的

帮我解释下下面一段EXCEL的vba代码的意思,还有运行时是怎样的一个过程...
Set rg = Rows(i) ‘rg等于第i行 Else ’否则 Set rg = Union(rg, Rows(i)) ‘rg等于之前所赋值,加上第i行 End If End If Next i rg.Delete ’把rg所指的范围删除 运行时的过程是这样的 1、假设C列最后一个非空单元格为C10,则循环9次,即FOR I=2 TO 9 2、假设C3,C5是空的...

excel中的VBA代码解释
一,Range("b2:f5").Interior.ColorIndex = xlNone Range是区域对象,Range("b2:f5")就是指左上角为“B2”单元格,右下角为“F5”单元格这样一个连续的区域,应该是4行5列的一个区域。Interior.ColorIndex 是指填充颜色(这里是采用ColorIndex严格说是颜色常数)xlNone 表示清除原来的填充色。所以...

excel中的vba是什么意思,如何用
1、打开电脑桌面上的excel2007软件。2、打开一个Excel文件,鼠标右击下面的工作表(如sheet1)。选择“查看代码”,就可以打开VBA编辑界面。3、选择如下图所示的下拉菜单,选择“worksheet”。4、选择如下图所示的下拉菜单,选择对应的触发模式。这里选择BeforeDoubleClick,意思就是说:在本工作表鼠标双击(...

请EXCEL VBA高手 ,帮忙解释一下 下面这段代码,具体是什么意思?
Sub save() '定义过程名;Dim ar, ix As Integer '定义变量ar和ix为整型变量;If [B2] = "甲" Then ix = 2: X = Sheets(ix).Range("A65536").End(xlUp).Row'Range("A65536").End(xlUp).Row意为当活动单元格为A65536(即A列最下面一个单元格)时,按一次Ctrl+向上键后,新...

求助:一段excel上VBA代码的翻译
Option Explicit '单元格更改时触发事件 Private Sub Worksheet_Change(ByVal Target As Range)'如果活动单元格大于1时停止程序 If Target.Count > 1 Then Exit Sub '使用Intersect方法判断所选单元格 If Intersect([b2].CurrentRegion, Target) Is Nothing Then Exit Sub '声明变量 Dim yf$, r1, ...

帮忙逐句翻译这段Excel VBA代码的详细意思
'ChDriveLeft(MyDir, 1) 'find all the excel files\/\/被注释掉了 'ChDir MyDir\/\/被注释掉了 'Match =Dir$("")\/\/被注释掉了 ThisWB = ThisWorkbook.Name \/\/ThisWB = 现在打开的文件的名字(我记得文件名是caption,这个应该也是文件名吧)Application.EnableEvents = False \/\/这个是禁用触发事件(...

麻烦帮我解释一下EXCEL中 下面这些VBA是什么意思
意思不难解释,但是具体你的控件分别做什么用的就不好解决了,这些都是控件的事件处理程序。分别针对窗体里的控件事件设定了相应的执行代码。没有窗体文件和控件内容是无法具体说明清楚的。

麻烦大家帮我“翻译”一下Excel中的这些VBA是什么意思?
代码的意思很简单,首先要确定的是S2的值是多少,(举例说是10.)就是把表里1-28行复制贴到到A31以下,且如此每隔31行粘贴1次,共粘贴10(s2的值)次.然后把这些粘贴了1-28行的内容(A-0栏),10次的话就是A1:O340设定为打印范围.Private Sub Workbook_Open() 打开工作表就执行下面代码.Dim i As ...

这几句EXCEL中的VBA代码是什么意思?
For i = 1 To ActiveSheet.UsedRange.Rows.Count '循环读取A列的值,自动判断输入的行数 s = ActiveSheet.Cells(i, 1).Value 'A列单元格的值 '与表格在相同文件夹下的图片的路径,这里指定是JPG图片文件 '如果是其他扩展名的图片文件,请修改,如GIF,PNG等 If Len(s) > 0 Then s = ...

excel vba 的一段代码,怎么理解?
Left(TextBox1.Text, Len(TextBox1.Text) - 1)结果是想得到TextBox1.Text这个输入框从左边算起到Len(TextBox1.Text) - 1这里的内容 Len(TextBox1.Text) - 1是指TextBox1.Text这个输入框有多少位字符再减1位 这么直白 能懂吧

相似回答
大家正在搜