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

我是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. 如何设置列的宽度,所以我不从源文件复制。

还有更优雅的方法,但是提供的信息,这将是诀窍。

 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