使用Excel.Range()时如何限制行选择的长度

时间:2012-08-27 14:42:17

标签: vb.net excel

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

以下是我到目前为止所做的一个基本示例:

  

Dim rngRange as Excel.Range

     

Dim wksXLWorksheet As Excel.Worksheet

     

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

我知道那行包含Range" A1" (这是一个单元格)是我想要的行,所以我使用EntireRow属性返回整行。它返回所有单元格,包括未使用的单元格,因此在单元格中超过16k,其中大部分为空。

如何选择只使用过细胞的范围?我不想使用UsedRange,因为它抓住了所有东西,我只想要一行,而且只想到单元格不再包含数据的地方。

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

2 个答案:

答案 0 :(得分:1)

使用.End属性,例如范围( “A1”)。完(xlToRight)。

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

答案 1 :(得分: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))