Excel+VBA: usedrange的不足
Excel+VBA: usedrange的不足
我们都知道usedrange可以得到已用数据区域,但是什么是"已用",如果在某个单元格我我输入了一个空格,usedrange会包含这个单元格,而这是我不想看到的,怎么办?
问题背景:
我处理学生成绩,常常要获取成绩表所占区域,但是由于我要用VBA修理成绩,只想获得实际有成绩的区域,至于成绩矩形区外某地方输了一个空格,不想算在内.
高手们,如何获得成绩表真正占有的区域?
[解决办法]
这是 VBA 代码:
Cells.Replace What:=" ", Replacement:="", LookAt:=xlPart, SearchOrder:= _ xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
[解决办法]
楼上的方法貌似一旦遇到空格就停了,因此不一定能选中全部。
要确定使用区域的话也可以这样(没看到你的表格,所以用了个笨方法,我假设你的列数已定,以下函数用来算行数..):
Function select_range() Dim i As Long, j As Long, num As Long '定义几个变量 num = 0 '用来标识空行的个数 i = Application.WorksheetFunction.CountA("A:A") + 100 '此处先调用函数输出A列的非空单元格数,但由于中间可能有空格,所以我再加100,以扩大收索范围, '您可根据实际情况再作调整...... '以下通过for循环,把定位的 1 到 i 列依次遍历,如果有连续100行为空则认定下面就没有数据了, '返回实际列数,从而确定实际区间 For j = 1 To i If Application.WorksheetFunction.Trim(Sheet1.Range("A" & j)) = "" Then '此处判断单元格经去空格处理后是否为空,位到a1单元格,算列数从此单元格开始.... If num = 100 Then select_range = j - num Else num = num + 1 End If Else num = 0 '有数,就清空,,,, End If Next j End Function