ActiveSheet.UsedRange.Columns.Count – 8是什么意思?

什么ActiveSheet.UsedRange.Columns.Count – 8在vba中的意思?

vba如何知道usedRange?

下面是UsedRange ( MSDN参考 )的确切定义:

每个工作表对象都有一个UsedRange属性,该属性返回一个Range对象,该对象表示正在使用的工作表的区域。 UsedRange属性表示由工作表中最左上angular和最右下angular非空单元格所描述的区域,并包含其间的所有单元格。

所以基本上,这条线是做什么的:

  1. .UsedRange – >在最.UsedRange单元格周围绘制一个框。
  2. .Columns – >select这些单元格的整个列
  3. .Count – >返回一个对应于有多less列的整数(在这个select中)
  4. - 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不仅表示非空的单元格,还表示没有任何值的格式化的单元格。 这就是为什么你应该保持警惕。