0

我正在使用 VB.net 代码来操作 Excel 文档。我正在尝试获取包含在单个特定行中的一系列单元格。我不知道具体的结束单元格,我只需要该行中包含值的所有单元格。

这是到目前为止我一直在做的一个基本示例:

将 rngRange 调暗为 Excel.Range

将 wksXLWorksheet 调暗为 Excel.Worksheet

rngRange = wksXLWorksheet.Range("A1").EntireRow

我知道包含范围“A1”(单个单元格)的行是我想要的行,因此我使用 EntireRow 属性返回整行。它返回所有单元格,包括未使用的单元格,因此超过 16k 的单元格,其中大部分是空的。

如何选择只有使用过的单元格的范围?我不想使用 UsedRange,因为它会抓住一切,我只想要一行,并且只需要直到单元格不再包含数据的位置。

另外,如果我选择这样一个有限的范围,它会对资源产生或多或少的影响吗?我假设选择小范围的影响较小,但我可能错了。

4

2 回答 2

1

使用 .End 属性,例如 Range("A1").End(xlToRight)。

http://msdn.microsoft.com/en-us/library/office/ff839539.aspx

于 2012-08-27T14:45:43.697 回答
0

Excel.Application 对象有一个 Intersect 方法,工作表有一个 UsedRange 属性。

Dim rngRange as Excel.Range
Dim wksXLWorksheet As Excel.Worksheet
Dim xlApp As Excel.Application = New Microsoft.Office.Interop.Excel.Application()

rngRange = Excel.Intersect(wksXLWorksheet.Range("1:1"), wksXLWorksheet.UsedRange)

或者,使用起点和终点定义范围,同时限定构成范围的单元格。

Dim rngRange as Excel.Range
Dim wksXLWorksheet As Excel.Worksheet

rngRange = wksXLWorksheet.Range(wksXLWorksheet.Range("A1"), wksXLWorksheet.Range("XFD1").End(xlToLeft))
于 2017-06-16T02:07:16.167 回答