2016-11-21 5 views
2

Je voudrais formater une certaine plage dans une feuille de calcul en tant que table dans Excel. Le formatage commence toujours dans la ligne 10. Afin de le faire, je l'ai écrit le code suivant:Formatage dynamique sous forme de tableau Excel VBA

Set rng = Range(Range("B10"), Range("B10").End(xlUp).SpecialCells(xlLastCell)) 
Set table = Sheets("Results").ListObjects.Add(xlSrcRange, rng, , xlYes) 
table.TableStyle = "TableStyleMedium13" 

A partir de maintenant, la mise en forme se fait de la ligne 10 jusqu'à la fin de la feuille de calcul - même dans lignes vides. Cependant, je voudrais que la table soit formatée seulement jusqu'à la dernière rangée de données et qu'elle le fasse dynamiquement étant donné que la quantité de données variera. Comment puis-je faire ceci?

Répondre

3

Le code ci-dessous formatera toutes les cellules de "B10" jusqu'à la dernière ligne avec des données dans la colonne B (formatera également des lignes vides au milieu, au cas où vous auriez des trous).

Dim LastRow As Long 

With Sheets("Results") 
    ' find last row with data in Column B 
    LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row 

    ' set Rng from B10 untill last row with data in Column B 
    Set Rng = Range("B10:B" & LastRow) 
    Set Table = .ListObjects.Add(xlSrcRange, Rng, , xlYes) 
    Table.TableStyle = "TableStyleMedium13" 
End With 
+1

Cela a fonctionné. Je vous remercie! – franciscofcosta

+1

@franciscofcosta vous êtes les bienvenus, s'il vous plaît marquer le petit ** V ** pour marquer comme réponse –

1
Range("B" & Rows.Count).End(xlUp) 

Cela devrait fonctionner - identifiera simplement la dernière ligne peuplée.