Question

Je suis en train de copier un en-tête et un ensemble de données à une nouvelle feuille de calcul pour l'impression.

Alors que je peux copier les données bien la largeur des colonnes sont perdues et en cours d'exécution autofit sur elle casse à nouveau la page. La largeur des colonnes ont été réglées manuellement manuellement lorsque la page a été conçu à l'origine.

À l'heure actuelle je:

Dim tmp As Worksheet
Set tmp = Sheets.Add(after:=ActiveSheet)
RD.Copy tmp.Range("A1") ' Range data (set elsewhere)
RH.Copy tmp.Range("A1") ' Range header (set elsewhere)

Je l'ai essayé d'utiliser xlPasteSpecial et xlPasteAll, mais ils ne donnent aucune différence tout en utilisant le presse-papiers.

Que dois-je faire pour copier les largeurs de cellules à travers des feuilles?

Était-ce utile?

La solution

Graham,

Après avoir copié les plages à travers, juste obtenir le numéro de colonne de la plage de destination, puis itérer à travers les colonnes de la plage source copie la propriété .ColumnWidth sur ...

Dim RD As Range
Dim RH As Range

Set RH = Cells.Range("A1:C1")
Set RD = Cells.Range("A2:C2")

Dim tmp As Worksheet
Set tmp = Sheets.Add(after:=ActiveSheet)
RD.Copy tmp.Range("A1") ' Range data (set elsewhere)'
RH.Copy tmp.Range("A2") ' Range header (set elsewhere)'

' Get the column number of the first cell in the destination range'
' because it looks like we are just setting the first cell of the destination range'
' and letting Excel roll the range over'
Dim tmpCol As Integer
tmpCol = tmp.Range("A1").Cells(1, 1).Column ' make sure you use the same range value'

Now loop through the source columns setting the dest column to the same width.
For Each objCol In RH.Columns

    tmp.Columns(tmpCol).ColumnWidth = objCol.ColumnWidth
    tmpCol = tmpCol + 1

Next

Autres conseils

boucle pourrait à travers les colonnes de la source, et définir les ColumnWidths correspondantes de la plage cible:

Dim i As Integer
For i = 1 To sourceRange.Columns.Count
    targetRange.Columns(i).ColumnWidth = sourceRange.Columns(i).ColumnWidth
Next
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top