2017-03-12 6 views
1

Je voudrais comment cela est codé:VBA: Comment fixer les positions des cellules dans la fonction OFFSET

OFFSET($F$52, 0, ($D342 - $D$342),1,1) 

Comme les positions les cellules ne sont pas les mêmes, pour représenter D342 cellulaire que je vais utiliser par exemple des cellules (300 + i, 5 + j).

Je veux savoir comment résoudre les cellules en utilisant le code VBA: i) fixer la ligne ii) Pour fixer la colonne iii) Pour fixer la ligne et la colonne

Merci :)

+0

Ce que vous demandez n'est pas clair. Contrairement aux formules Excel, VBA vous offre la possibilité de définir des * variables *. Vous pouvez les réparer, les changer ou en faire tout ce qui convient à votre application. –

+0

@ A.S.H., Si vous voulez réparer une ligne, je veux savoir comment coder pour représenter D $ 342. Si je veux réparer une colonne, je veux savoir comment coder $ D342. Si je veux corriger les deux, comment puis-je écrire le code pour $ 342 D $ C'est ce que je demande. – vbalearner

Répondre

0

Lorsque vous avez une plage et que vous souhaitez insérer son adresse dans une formule, vous pouvez utiliser .Address. Cette propriété est très flexible et vous permet de contrôler beaucoup de choses, y compris et surtout, si vous voulez que les choses soient absolues (fixes) ou relatives (mobiles lors de la copie). Par souci de votre problème, vous pouvez utiliser les paramètres RowAbsolute et ColumnAbsolute du .Address method. Par exemple, Cells(300 + i, 5 + j).Address(RowAbsolute=False). N'oubliez pas que la valeur par défaut de ces paramètres est True.

L'extrait de code suivant vous indiquera comment procéder, des explications sont incluses.

Sub TestUsingAddress() 
    Dim r As Range 
    Set r = Sheet1.Cells(3, 4) ' (D3) 

    ' You can control the parameters RowAbsolute and ColumnAbsolute 
    Debug.Print r.address      ' $D$3 (default) 
    Debug.Print r.address(ColumnAbsolute:=False) ' D$3 
    Debug.Print r.address(RowAbsolute:=False) ' $D3 
    Debug.Print r.address(RowAbsolute:=False, ColumnAbsolute:=False) ' D3 

    'and you can get the sheet's name with the address using the External parameter 
    Debug.Print r.address(external:=True) ' [SOTest.xlsm]Sheet1!$D$3 

    ' You can also get R1C1 format using the ReferenceStyle Parameter 
    Debug.Print r.address(ReferenceStyle:=xlR1C1) ' R3C4. default format is xlA1 
End Sub 
+1

Merci @ A.S.H pour votre aide! – vbalearner