如何复制和粘贴范围,包括格式和列宽

时间:2017-03-09 19:51:02

标签: excel vba excel-vba

我是VBA的全新人物,我自己学习。我提出了一个有效的代码,但我知道必须有一种更优雅的方式来编写它而不使用Select方法。

wscount = ActiveWorkbook.Worksheets.Count
Sheets.Add After:=Sheets(Sheets.Count)
Worksheets(1).Select
Range("B2:B100").Copy
Worksheets(wscount + 1).Select
Range("A1:A100").Select
Selection.PasteSpecial Paste:=xlPasteColumnWidths
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
        , SkipBlanks:=False, Transpose:=False

我希望我可以在代码中获取列集的宽度,而不是从源代码中复制。

此外,是否有办法根据范围的一个单元格中的“最长”文本更改列的宽度?

无论如何,我的两个问题是:

  1. 如何编写上述代码而无需使用Select
  2. 如何设置列的宽度,以便我不从源中复制。

1 个答案:

答案 0 :(得分:1)

还有更优雅的方式,但是通过提供的信息,这将有所帮助。

Dim wscount as Integer
Dim wb as Workbook
Set wb  = ActiveWorkbook
wscount = wb.Worksheets.Count

wb.Sheets.Add After:=wb.Sheets(wb.Sheets.Count)
wb.Worksheets(1).Range("B2:B100").Copy
wb.Worksheets(wscount + 1).Range("A1:A100").PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
        , SkipBlanks:=False, Transpose:=False
wb.Worksheets(wscount + 1).range("a1").EntireColumn.AutoFit