簡體   English   中英

在Excel VBA中的多個列上設置列寬

[英]Setting a column width on multiple columns in Excel VBA

Jeeped和CLR提供了代碼,該代碼從D列開始向名為sht02AnalysisSummary的工作表中添加了可變數目的列,同時復制了C列的邊界和公式。

AddCol = txtNrEvaluated

With sht02AnalysisSummary
    Set rangeCopy = .Range(.Cells(3, "C"), .Cells(.Rows.Count, "C").End(xlUp))
    rangeCopy.Copy Destination:=.Cells(3, .Columns.Count).End(xlToLeft).Offset(0, 1).Resize(rangeCopy.Rows.Count, AddCol)
End With

但是,此代碼不會復制寬度的Column C格式,盡管我嘗試了EntireColumn.ColumnWidth = 15With End With甚至是自己的With End With ,但我一直沒有成功。

任何幫助將不勝感激。

在您的問題下方擴展我的評論。

僅當跨整個列和整個范圍進行復制時,才復制列寬。 同樣rng.ColumnWidth = 15應該工作

這是您要嘗試的嗎?

Dim rangeCopy As Range, destRng As Range

AddCol = 2

With sht02AnalysisSummary
    Set rangeCopy = .Range(.Cells(3, "C"), .Cells(.Rows.Count, "C").End(xlUp))
    Set destRng = .Cells(3, .Columns.Count).End(xlToLeft).Offset(0, 1).Resize(rangeCopy.Rows.Count, AddCol)
    rangeCopy.Copy destRng
    destRng.ColumnWidth = 15
End With

截圖

在此處輸入圖片說明

如果要將源選項卡的列C寬度復制到新列中,可以使用:

Dim rangeCopy As Range, rangePaste As Range
Dim Addcol As Integer

Addcol = NrEvaluated

With sht02AnalysisSummary

    Set rangeCopy = .Range(.Cells(3, "C"), .Cells(.Rows.Count, "C").End(xlUp))
    Set rangePaste = .Cells(3, .Columns.Count).End(xlToLeft).Offset(0, 1).Resize(rangeCopy.Rows.Count, Addcol)

    rangeCopy.Copy Destination:=rangePaste
    rangePaste.EntireColumn.ColumnWidth = rangeCopy.EntireColumn.ColumnWidth

End With

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM