Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何复制和粘贴范围,包括格式和列宽_Vba_Excel - Fatal编程技术网

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

Vba 如何复制和粘贴范围,包括格式和列宽,vba,excel,Vba,Excel,我是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.P

我是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
我希望我能得到代码中设置的列的宽度,而不是从源代码中复制

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

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

  • 如何编写上述代码而不必使用
    选择
    ,以及
  • 如何设置列的宽度,以便不从源文件复制
    现在还有更优雅的方式,但是有了提供的信息,这就可以了

    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
    

    现在还有更优雅的方式,但是有了提供的信息,这就可以了

    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
    

    。要设置列宽,请尝试使用宏录制器录制宏-录制时将列的宽度设置为10,然后自动调整宽度。停止记录器并查看生成的宏-它将显示两条语句,例如
    列(“A:A”)。ColumnWidth=10
    列(“A:A”)。EntireClumn.AutoFit
    。要设置列宽,请尝试使用宏记录器录制宏-在录制时,将列的宽度设置为,例如10,然后自动调整宽度。停止录音机并查看生成的宏-它将显示两条语句,例如
    列(“A:A”)。ColumnWidth=10
    列(“A:A”)。EntireColumn.AutoFit
    。谢谢你太棒了!谢谢你太棒了!