2017-08-10 6 views
1

Existe-t-il un moyen simple de changer l'origine pour dire, votre cellule active? Similaire au système de coordonnées Java cartésien? Y'a-t'il un quelconque moyen d'y arriver? Donc, si ma cellule active est à (5,4), puis-je changer cela pour devenir le nouveau (1,1)?Comment changer l'origine à l'emplacement de vos cellules actuelles dans Excel VBA?

+0

Vous pouvez supprimer les lignes et les colonnes avant vos valeurs ... Mais c'est comme un hack ... – deHaar

Répondre

1

Cells(1,1) sans rien saisi par défaut « Activebook.cells (1,1)` place, vous pouvez consulter la gamme de la qualifier.

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

qui signifie cellule D5 ou Activebook.Cells (5,4)

+0

Comment définir la plage avec l'activecell comme nouveau 1,1? J'ai une variable de pointeur qui est égale à ActiveCell.Adress (RowAbsolute: = False, ColumnAbsolute: = False). Et puis je veux définir la nouvelle origine avec quelque chose comme Range ("pointeur: IV100000"). Cellules (1,1). Comment je fais ça? –

+0

Le fait est qu'il n'y a pas de "1,1". C'est un chemin relatif basé sur la gamme qui le précède comme 'Range (" A5 "). Cellules (1,1)' signifie cellule "A5". La propriété 'Cells' est le chemin relatif de la plage. Si aucune plage n'est fournie, 'cells (1,1)' fait référence à 'ActiveSheet'. Donc, votre question de "Comment définir la plage avec l'activecell comme le nouveau 1,1" est sans signification. Il n'y a pas de "1,1" absolu. Spécifiez la plage qui vous intéresse 'Range (" D5 ")' puis spécifiez la position relative de la cellule que vous voulez 'Range ("D5"). Cells (1,5) 'ou' Range ("D5"). 0,5) 'ou quoi-avez-vous. – JNevill

+0

Aussi, désolé pour l'attente sur la réponse. J'étais dans une région reculée la semaine dernière sans Internet – JNevill

0

Vous pouvez utiliser le

. Offset propriété

donc, si votre cellule était en cours ActiveCell D5, alors ActiveCell.Offset(10, 7) fait référence à la cellule 10 lignes en dessous et 7 colonnes à r droit (c.-à-d. cellule K15).

Alternativement, vous pouvez simplement utiliser la propriété Cells (selon la réponse de JNevill) où ActiveCell.Cells(11, 8) se réfère à K15 si la ActiveCell était actuellement D5.

La principale différence entre les deux méthodes est que Offset est efficace à base de zéro (à savoir ActiveCell.Offset(0, 0) est le même que ActiveCell), tandis que Cells est effectivement un repose (à savoir ActiveCell.Cells(1, 1) est le même que ActiveCell).