如何在Excel VBA中将原点更改为当前单元格的位置?

问题描述:

有没有简单的方法来改变原点,说你的活动单元?类似于Java笛卡尔坐标系?有没有办法做到这一点?所以如果我的活动细胞在(5,4),我可以改变它成为新的(1,1)?如何在Excel VBA中将原点更改为当前单元格的位置?

+0

你可以在你的值之前删除行和列......但是这就像一个黑客...... – deHaar

Cells(1,1)没有任何东西之前,则默认为“Activebook.cells(1,1)`相反,你可以参照范围限定它:

Range("D5:IV100000").Cells(1,1) 

这将意味着细胞D5或Activebook.Cells( 5,4)

+0

如何设置活动单元的范围作为新的1,1?我有一个指针变量,它等于ActiveCell.Adress(RowAbsolute:= False,ColumnAbsolute:= False)。然后我想用Range(“pointer:IV100000”)设置新的原点。单元格(1,1)。我怎么做? –

+0

重点是没有“1,1”。它是一个基于范围的相对路径,如Range(“A5”)。Cells(1,1)'表示单元格“A5”。 'Cells'属性是距离范围的相对路径。如果没有提供范围,那么'cells(1,1)'指的是'ActiveSheet'。所以你的问题“我如何将activecell设置为新的1,1”是没有意义的。没有绝对的“1,1”。指定你关心Range的范围(“D5”),然后指定你想要的单元的相对位置Range(“D5”)。cells(1,5)'或'Range(“D5”)。Offset 0,5)'或者你有什么。 – JNevill

+0

另外,抱歉在等待答复。上周我在一个偏远地区没有互联网 – JNevill

你可以使用Offset属性。

因此,如果您当前ActiveCell是D5单元格,然后ActiveCell.Offset(10, 7)是指细胞在其下方10行7列到R ight(即单元格K15)。如果ActiveCell当前是D5,则ActiveCell.Cells(11, 8)将引用K15。

的两种方法之间的主要区别是,Offset实际上为零基(即ActiveCell.Offset(0, 0)相同ActiveCell),同时Cells是一个有效的基于(即ActiveCell.Cells(1, 1)相同ActiveCell)。