No.1
Item在vba代码中可理解为一个单独项目,一个单元格或一个大类下的子类。
总之就是一个集合里的某一个。
本节介绍的这个Item属性,是Range对象下的一个属性。
其实在应用这个属性之前,本能地认为它是某一个单元区域内的某一个。
可是在实际应用的时候,完全不是这么回事儿。
从某些方面考虑,基本和这个集合没有多大关系。
这就让我有点迷惑。
它是怎样的一种工作机制呢?
下面具体看一下。
下图为Item属性:
No.2
Item给出了两个参数,前一个RowIndex代表行号,后一个ColumnIndex代表列号。
仅仅这么理解就不十分严谨了。
因为它不仅仅指行号和列号,后一个参数完全可以省略或不写。
如果不写后一个参数,将返回此列中的第RowIndex单元格对象,基本相当于向下选择。
例:
dim R as Range
set R=Range("C1:C10").Item(10)
msgbox R.address
输出”$C$10″,也就说返回C10单元格对象给变量R。
下面代码同样的结果:
dim R as Range
set R=Range("C1:C10").Item(10,1)
msgbox R.address
在同一列的情况下,不用写两个参数。
因为,单独一个参数,它将继续同一列向下指定。
No.3
上图为例,进行多个单元区域返回。
可以使用Application.Union(Range1,Range2)函数将几个单元格区域整合。
但是Item也并不代表其中的某一个项,这就让我有点不明白了。
唯一认识清楚的是,它的第一参考项是第一个Range1。
也就说,所有的Item参数,以Range1地址为起点。
如:
Set R = Application.Union(s.Range(“B2:B3”), s.Range(“D2:D3”))
msgbox R.item(1,1).address
返回“B2”单元地址。
Set R = Application.Union(s.Range(“E2:E3”), s.Range(“D2:D3”))
msgbox R.item(1,1).address
返回”E2″地址。
也就是以第一个区域为基准。
而Item(RowIndex,ColumnIndex)则以1开始为偏移量进行。
RowIndex偏移量1为起始单元,不可为零或负值。
ColumnIndex偏移量可以零或负值,但不能超出最小偏移量。
这个很重要,一定要记住了。
No.4
代码介绍
Private Sub CommandButton1_Click()Dim ri As Integer, ci As Integerri = Me.ComboBox1.Valueci = Me.ComboBox2.ValueDim R As Range, s As WorksheetSet s = ThisWorkbook.ActiveSheetSet R = Application.Union(s.Range("B2:B3"), s.Range("D2:D3"))With R MsgBox R.Item(ri, ci).AddressEnd WithEnd Sub
这个Item并不指通常意义上的集合项,而是以Range1为基准,以参数RowIndex和ColumnIndex为偏移量的某一个单元格对象。
所以,对于这个理解一定要分清楚,不应该混淆使用。
欢迎、收藏
—END—