好了,我正在完成一个遗留的Excel-VBA应用程序的附加项目,我又一次遇到了神秘的range.Rows
(?)和worksheet.Rows
属性。
有没有人知道这些属性到底是做什么的,它们应该提供给我什么?(注意:所有这些可能也适用于相应的*.Columns
属性)。
我真正希望能够使用它的是返回一系列行,如下所示:
SET rng = wks.Rows(iStartRow, iEndRow)
但我从来没能让它做到这一点,即使Intellisense显示了两个参数。相反,我必须使用另外两到三种(非常笨拙)技术中的一种。
该帮助非常无用(对于Office VBA通常如此),而且无论我添加多少其他术语,搜索“行”也没有多大用处。
我能用它做的唯一事情是: 1)返回单行作为一个范围( rng.Rows(i)
);2)返回一个范围( rng.Rows.Count
)中的行数。是这样吗?它真的没有其他的好处吗?
Clarification:我知道它返回一个范围,还有其他方法可以获得行的范围。我要问的是,我们从.Rows()
得到了什么,而我们还没有从.Cells()
和.Range()
得到什么?我所知道的两件事是: 1)一种更简单的返回单行范围的方法;2)一种计算范围内行数的方法。
还有别的事吗?
发布于 2009-06-24 16:20:54
Range.Rows
和Range.Columns
返回的范围基本上相同,只是新的范围有一个标志,该标志表示行或列。这对于Range.Count和Range.Hidden等Excel属性以及Range.AutoFit()
等方法是必需的
Range.Rows.Count
返回Range.Range.Columns.Count
中的行数返回Range.Range.Rows.AutoFit()
中的列数自适应Range.Range.Columns.AutoFit()
中的行自适应范围内的列。您可能会发现Range.EntireRow
和Range.EntireColumn
很有用,尽管它们仍然不是您想要的。对于表示的范围,它们返回EntireRow
的所有可能列和EntireColumn
的所有可能行。
我之所以知道这一点,是因为SpreadsheetGear for .NET附带了与.NET API非常相似的Excel。Excel附带了几个对IRange索引器的强类型重载,其中包括您可能希望SpreadsheetGear具有的一个:
IRange this[int row1, int column1, int row2, int column2];
免责声明:我拥有SpreadsheetGear有限公司
发布于 2009-06-24 14:06:22
您的两个示例是我使用过的唯一Rows
和Columns
属性,但从理论上讲,您可以用它们做任何可以用Range
对象做的事情。
这些属性的返回类型本身就是一个Range
,因此您可以执行以下操作:
Dim myRange as Range
Set myRange = Sheet1.Range(Cells(2,2),Cells(8,8))
myRange.Rows(3).Select
它将选择myRange
中的第三行(Sheet1中的单元格B4:H4 )。
更新:要做你想做的事情,你可以使用:
Dim interestingRows as Range
Set interestingRows = Sheet1.Range(startRow & ":" & endRow)
update #2:或者,从另一个范围中获取行的子集:
Dim someRange As Range
Dim interestingRows As Range
Set myRange = Sheet1.Range(Cells(2, 2), Cells(8, 8))
startRow = 3
endRow = 6
Set interestingRows = Range(myRange.Rows(startRow), myRange.Rows(endRow))
发布于 2014-03-07 05:45:33
由于.Rows结果被标记为由行组成,因此您可以"For Each“单独处理每一行,如下所示:
Function Attendance(rng As Range) As Long
Attendance = 0
For Each rRow In rng.Rows
If WorksheetFunction.Sum(rRow) > 0 Then
Attendance = Attendance + 1
End If
Next
End Function
我使用它来检查人员列表(不同行)的几个类别(不同列)中的任何一个类别的出席情况。
(当然,您可以使用.Columns对范围中的列执行"For Each“。)
https://stackoverflow.com/questions/1038534
复制相似问题