ActiveSheet.UsedRange.Columns.Count – 8是什么意思?
什么ActiveSheet.UsedRange.Columns.Count – 8在vba中的意思?
vba如何知道usedRange?
下面是UsedRange
( MSDN参考 )的确切定义:
每个工作表对象都有一个UsedRange属性,该属性返回一个Range对象,该对象表示正在使用的工作表的区域。 UsedRange属性表示由工作表中最左上angular和最右下angular非空单元格所描述的区域,并包含其间的所有单元格。
所以基本上,这条线是做什么的:
-
.UsedRange
– >在最.UsedRange
单元格周围绘制一个框。 -
.Columns
– >select这些单元格的整个列 -
.Count
– >返回一个对应于有多less列的整数(在这个select中) -
- 8
– >从前一个整数中减去8。
我假设VBA通过查找具有最低和最高索引值的非空单元格来计算UsedRange。
最有可能的是,你得到一个错误,因为你的范围内的行数小于3,因此返回的数字是负数。
BernardSaucier已经给了你一个答案。 我的文章是不是一个答案,但解释为什么你不应该使用UsedRange
。
UsedRange
非常不可靠,如图所示
要find有数据的最后一列,请使用.Find
,然后从中减去。
With Sheets("Sheet1") If Application.WorksheetFunction.CountA(.Cells) <> 0 Then lastCol = .Cells.Find(What:="*", _ After:=.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Column Else lastCol = 1 End If End With If lastCol > 8 Then 'Debug.Print ActiveSheet.UsedRange.Columns.Count - 8 'The above becomes Debug.Print lastCol - 8 End If
似乎你想移动。 尝试这个:
ActiveSheet.UsedRange.select
结果是….
如果你想把这个select移动3行然后试试这个
ActiveSheet.UsedRange.offset(-3).select
做这个…
我想如果你尝试:
Sub Macro3() a = ActiveSheet.UsedRange.Columns.Count - 3 End Sub
一个手表上你会看到它确实有所作为。
UsedRange不仅表示非空的单元格,还表示没有任何值的格式化的单元格。 这就是为什么你应该保持警惕。