MACRO VBA - "运行时错误' 1004'应用程序 - 定义的或对象定义的错误"

时间:2016-04-05 13:57:36

标签: excel vba excel-vba if-statement for-loop

嗨,任何人都可以找出我收到此消息的原因..

  

运行时错误' 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

提前谢谢你:)

2 个答案:

答案 0 :(得分:1)

您需要使用工作表名称限定Range("A1")(如Paul Ogilvie的评论中所述。

但是您不需要在工作表之间来回切换以进行粘贴。在“复制”之后,您只需添加“目的地”。

我做了你的代码的缩减版本(只有2列),所以你可以看到我的意思:

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

这当然假设您要粘贴到相同的列号!

答案 1 :(得分:0)

假设单元格A13是工作表输出中的活动单元格,请参阅以下代码

worksheets("output").Range("A13").Activate
ActiveCell.EntireColumn.Copy Worksheets("input").Range("A1")

它将复制整个列并将其粘贴到工作表输入