我有一个包含600行的工作表,每行代表一名学生。我有一个用户表单,一次显示一个学生。表单上的Next / Previous按钮触发GetStudent Sub,它接受一个参数,即当前行索引。我不想一次使用所有600行,所以我在GetStudent Sub中使用A1:Z10语法创建一个范围。这是以编程方式完成的,但为了清楚起见,我在代码示例中添加了一个文字值:
Dim ds As Range, w As Worksheet, currentRow As Range
Set w = ActiveWorkbook.Worksheets("students_sheet")
Set ds = w.Range("A4:Z5")
如果我这样做
Debug.Print ds.Rows.Count
我得到预期的2,但是当我将索引传递给ds.Rows()
时Set currentRow = ds.Rows(rowIndex)
我在工作表中的下一行一直到工作表中的600行,而不仅仅是指定范围内的2行。范围不限于Rows.Count
属性指示的2行。任何人都可以帮我弄清楚我做错了什么吗?
答案 0 :(得分:2)
Rows
属性 relative 属于您调用它的范围,并且不受范围本身限制。
因此,当ds
设置为A4:Z5
并且您致电ds.Rows(rowIndex)
时,您将获得
rowIndex Range
1 A4:Z4
10 A13:Z13
0 A3:Z3
-2 A1:Z1
-3 error