首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VBA >

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

2012-02-05 
基础问题,请大侠们帮忙呀为什么我用VBA清除了前5行的内容,但没有删除行,然后我再用VBA检测有效行,仍然是前

基础问题,请大侠们帮忙呀
为什么我用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 

热点排行