Excel 2010 - 选择范围类的方法失败

时间:2015-07-02 08:35:54

标签: excel vba excel-vba excel-2010

我想运行以下vba代码:

Sub combineSheets()

Dim rngPaste As Range 'range to paste to
Dim rngCopy As Range 'range to copy from
Dim wb As Excel.Workbook


Dim strRange As String 'range in sheets to copy from
strRange = "A2:A10"

Set rngPaste = ActiveWorkbook.Worksheets("Combined").Range(strRange) 'initial range to paste into

Set wb = ActiveWorkbook
Dim s As Integer
For s = 2 To Sheets.Count

 'copy down the value
    wb.Worksheets(s).Range("A:A").Select ' ERROR: here I get it!
    wb.Worksheets(s).Range("A7").Activate
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    wb.Worksheets(s).Rows("4:4").Select
    With Selection
        .HorizontalAlignment = xlGeneral
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    Selection.UnMerge
    wb.Worksheets(s).Range("B4").Select
    Selection.Copy
    wb.Worksheets(s).Range("A5").Select
    ActiveSheet.Paste
    wb.Worksheets(s).Range("A6").Select
    ActiveSheet.Paste
    wb.Worksheets(s).Range("A7").Select
    ActiveSheet.Paste
    wb.Worksheets(s).Range("A8").Select
    ActiveSheet.Paste
    wb.Worksheets(s).Range("A9").Select
    ActiveSheet.Paste
    wb.Worksheets(s).Range("A10").Select
    ActiveSheet.Paste
    'delete the first 4 rows
    wb.Worksheets(s).Rows("1:4").Select
    Selection.Delete Shift:=xlUp
    '-------------------

    'copy to new sheet
    Set rngCopy = ActiveWorkbook.Worksheets(s).Range(strRange) 'copy from same range in each sheet

    rngPaste.Value = rngCopy.Value 'copy values into first sheet

    Set rngPaste = rngPaste.Offset(10, 0) 'moves paste range for next copy

Next s

End Sub

但是,我收到错误:Run-time error 1004: Select method of Range class failed

有什么建议我做错了吗?

感谢您的回复!

2 个答案:

答案 0 :(得分:2)

你不能使用那样的选择方法

wb.Worksheets(s).Range("A:A").Select ' ERROR: here I get it!

您应该激活工作簿,然后选择工作表和范围,如下所示:

wb.Activate
Worksheets(s).Select
Range("A:A").Select

答案 1 :(得分:1)

您无法在工作表中选择不在前台的单元格或范围。相反,您必须事先激活它才能将工作表带到前台。所以你应该添加

ActiveWorkbook.Worksheets(s).Activate

作为for循环中的第一行。像这样:

For s = 2 To Sheets.Count

    ActiveWorkbook.Worksheets(s).Activate  ' <--- add the line here

 'copy down the value
    wb.Worksheets(s).Range("A:A").Select ' ERROR: here I get it!
    wb.Worksheets(s).Range("A7").Activate
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    wb.Worksheets(s).Rows("4:4").Select
 ' [...]