2017-02-24 1 views
2

Je suis assez nouveau pour VBA et Excel. J'ai un code qui définit la zone d'impression pour un documentLe code pour configurer la zone d'impression ne fonctionnera pas

Dim count As Integer 
count = ThisWorkbook.Worksheets("sheet2").Range("E106").Value 

    Dim i As Integer 
    i = count + 4 


    Sheets("sheet1").PageSetup.PrintArea = Range(Cells(3, 2), Cells(35, i)) 
    End Sub 

Mais quand je vais dans Aperçu avant impression, la feuille complète est affichée. Sheet1 et sheet2 sont des alias pour les noms de feuille de calcul, mais j'ai un autre code qui les référence et cela fonctionne très bien. J'ai déjà essayé d'enregistrer la macro pour définir la zone d'impression en premier lieu, puis inséré ma gamme personnalisée. Toute aide sur ce que je fais mal serait grandement apprécié :)

+0

Enregistrer une macro, définissez la zone d'impression, puis affichez la source macro pour un exemple de le faire. –

+0

Salut Ken, c'est exactement ce que j'ai fait, puis j'ai changé la gamme pour ma personnalisée, mais ça ne marche pas –

+0

Ensuite, il semblerait que la plage que vous définissez n'est pas correcte, n'est-ce pas? –

Répondre

4

La propriété PrintArea du PageSetup est pas un objet (range), mais un string tenant la adresse de la plage souhaitée. Essayez ceci:

With Sheets("sheet1") 
    .PageSetup.PrintArea = .Range(.Cells(3, 2), .Cells(35, i)).Address 
End With    '          ^^^^^^^^ 
1

Un peu plus version avancée (testé):

With ThisWorkbook.Worksheets("Sheet1") 
    .PageSetup.PrintArea = .Range("offset(B3,0,0,32,Sheet2!E106+2)").Address 
    .DisplayPageBreaks = False ' optional to hide the print area rectangle 
End With 
+0

Ceci est un raccourci agréable et utile, je ne comprends pas le downvote. –

+0

@ A.S.H Je pense que quelqu'un a supposé qu'il ressemble trop à la vôtre ou qu'il est incorrect en raison de la fonction de décalage inhabituelle. Je vais le laisser de toute façon – Slai

+0

Je pense que vous devriez le laisser, la méthode bien que inhabituelle est très utile pour les pros;) –