当前位置: 代码迷 >> VBA >> 基础有关问题,请大侠们帮忙呀
  详细解决方案

基础有关问题,请大侠们帮忙呀

热度:6005   发布时间:2013-02-26 00:00:00.0
基础问题,请大侠们帮忙呀
为什么我用VBA清除了前5行的内容,但没有删除行,然后我再用VBA检测有效行,仍然是前5行有效,而且VBA会从第6行开始写入数据,但前面5行都是空的,请高手们帮忙呀

------解决方案--------------------------------------------------------
个人删数据的语句是
1.找到要删除的行-X
2。做循环X行到倒数第2行-N-1
3.使得X=X+1行的数据,递推得N=N-1行
我也是新人,希望对你有帮助
------解决方案--------------------------------------------------------
你是想删除前5行,还是清空前5行,请选择对正确的方法。

如果是删除从X行开始的N行,vba代码如下:
VB code
'删除从X行开始的N行Rows(X & ":" X + N - 1).Delete Shift:=xlUp'删除从1行开始的5行Rows("1:5").Delete Shift:=xlUp
------解决方案--------------------------------------------------------
TO 金色年华:从现象推断你代码中应该是使用了USEDRANGE来确定当前有数据的区域,在工作表内容更新时,USEDRANGE取得的结果某些时候不正确,这是从Excel 2003(没有研究过以前版本)就有的BUG,但是到2010仍然存在这个问题,请看下面的演示:
工作表中仅在A列的A1:A5有数据,运行下面的代码,根据我的注释,可以很清楚看到这个BUG,所以定位最后单元格时,尽量不要使用USEDRANGE.
VB code
Sub Demo()    With ActiveSheet.UsedRange        ' 结果是 A1:A5 -- 正确        Debug.Print .Address(0, 0)        ' 结果是 5 -- 正确        Debug.Print [a65535].End(xlUp).Row        ' 删除两行        Range("4:5").ClearContents         ' 结果是 3 -- 正确        Debug.Print [a65535].End(xlUp).Row         ' 结果是 3 -- 正确        Debug.Print ActiveSheet.UsedRange.Cells.Count         ' 结果是 5 -- 正确        Debug.Print .Address(0, 0)    End WithEnd Sub
  相关解决方案