我想运行以下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
。
有什么建议我做错了吗?
感谢您的回复!
答案 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
' [...]