嗨,有人能理解我收到这条消息的原因吗。。
运行时错误"1004"应用程序定义或对象定义错误
这是我的代码,问题行似乎是:
range("A1").Select
这是代码的其余部分:
Sub HorizontalLoop()
Dim lCol As Long
Sheets("output").Select
For lCol = 1 To 100
Dim inputrange As String
If Not IsEmpty(Cells(lCol).Value) Then
inputrange = Cells(1, lCol).Value
ActiveCell.EntireColumn.Select
Selection.Copy
Sheets("input").Select
range("A1").Select
ActiveSheet.Paste
Sheets("output").Select
End If
Next lCol
End Sub
提前感谢:)
您需要使用工作表名称限定Range("A1")
(正如Paul Ogilvie的评论中所提到的。
但是您不需要在要粘贴的工作表之间来回切换。在"副本"之后,您可以添加"目的地"。
我对你的代码做了一个精简版(只有两列),这样你就可以明白我的意思了:
Sub HorizontalLoop2()
Dim lCol As Long
Dim inputrange As String
Dim wsO As Worksheet
Dim wsI As Worksheet
Set wsO = ThisWorkbook.Worksheets("output")
Set wsI = ThisWorkbook.Worksheets("input")
For lCol = 1 To 2
If Not IsEmpty(wsO.Cells(lCol).Value) Then
inputrange = wsO.Cells(lCol).Value
wsO.Columns(lCol).Copy _
Destination:=wsI.Cells(1, lCol)
End If
Next lCol
End Sub
当然,这是假设您希望粘贴到相同的列编号!
假设单元格A13在工作表输出中是活动单元格,请参阅下面的代码
worksheets("output").Range("A13").Activate
ActiveCell.EntireColumn.Copy Worksheets("input").Range("A1")
它将复制整个列并将其粘贴到工作表输入