Excel VBA Pour Chaque Feuille de calcul de la Boucle
Je suis en train de travailler sur le code pour aller à travers chaque feuille dans mon Classeur, et ensuite mettre à jour les largeurs de colonne. Ci-dessous le code que j'ai écrit; je ne reçois pas toutes les erreurs, mais il ne fait pas faire quoi que ce soit. Toute aide est grandement appréciée!
Option Explicit
Dim ws As Worksheet, a As Range
Sub forEachWs()
For Each ws In ActiveWorkbook.Worksheets
Call resizingColumns
Next
End Sub
Sub resizingColumns()
Range("A:A").ColumnWidth = 20.14
Range("B:B").ColumnWidth = 9.71
Range("C:C").ColumnWidth = 35.86
Range("D:D").ColumnWidth = 30.57
Range("E:E").ColumnWidth = 23.57
Range("F:F").ColumnWidth = 21.43
Range("G:G").ColumnWidth = 18.43
Range("H:H").ColumnWidth = 23.86
Range("i:I").ColumnWidth = 27.43
Range("J:J").ColumnWidth = 36.71
Range("K:K").ColumnWidth = 30.29
Range("L:L").ColumnWidth = 31.14
Range("M:M").ColumnWidth = 31
Range("N:N").ColumnWidth = 41.14
Range("O:O").ColumnWidth = 33.86
End Sub
maintenant, c'est en cours d'exécution sur l'hypothèse, et peut-être tort, mais à la place de votre sous vous pouvez utiliser
ws.Columns("A:O").AutoFit
si vous c'est ce que vous essayez de faire.OriginalL'auteur Dakota | 2014-02-20
Vous devez vous connecter pour publier un commentaire.
Essayer de modifier légèrement votre code:
Note,
resizingColumns
routine prend parametr - feuille de calcul qui Varie appartient.Fondamentalement, lorsque vous utilisez
Range("O:O")
- code operats avec une gamme de ActiveSheet, qui est pourquoi vous devez utiliserWith ws
déclaration puis.Range("O:O")
.Et il n'est pas nécessaire d'utiliser des variables globales (sauf si vous utilisez ailleurs)
OriginalL'auteur Dmitry Pavliv
Essayer cette présentation succincte code:
Si vous voulez des colonnes supplémentaires, il suffit de changer
1 to 15
à1 to X
oùX
est l'index de colonne de la colonne que vous souhaitez, et à ajouter la taille de la colonne que vous souhaitezStrSize
.Par exemple, si vous voulez
P:P
pour une largeur de25
, il suffit d'ajouter;25
àStrSize
et changementColIter...
àColIter = 1 to 16
.Espère que cette aide.
une autre façon est d'utiliser des
Array(20.14,9.71,..)
au lieu de chaîne+split:)Plus court code, mais utiliser plus de mémoire et un peu plus de temps. Plus court ne veut pas dire mieux.
Yep, c'est pourquoi j'ai tenu à "réclamer", lol. Cependant, à moins que l'utilisateur veut le faire à un couple douzaine de feuilles de calcul et des centaines de colonnes, je vois la mise à jour de ce que beaucoup plus facile (du moins si vous savez l'index de colonne et ne pas se confondre par
StrSize
, harhar). Sur ma fin, il n'3 feuilles dans un instant. 🙂OriginalL'auteur Manhattan
Vous avez besoin de mettre la feuille de calcul identifiant dans vos déclarations, comme indiqué ci-dessous ...
non, vous ne devriez pas:)
OriginalL'auteur Jacob
Au lieu d'ajouter "ws." avant chaque Gamme, comme suggéré ci-dessus, vous pouvez l'ajouter
"ws.activer" avant d'Appeler à la place.
Cela vous mettra dans la feuille de calcul que vous souhaitez travailler.
OriginalL'auteur F.Rut