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?
Répondre
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)
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? –
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
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
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
).
Vous pouvez supprimer les lignes et les colonnes avant vos valeurs ... Mais c'est comme un hack ... – deHaar