从一个不断变化的工作簿复制/粘贴到另一个

时间:2016-10-19 12:18:45

标签: excel vba excel-vba

我正在尝试编写一个宏,该宏将从不断更新不同数据量的电子表格中获取数据,并将其粘贴到单个列中的另一个电子表格中而不会覆盖。另一件事是它搜索两个点,其中一个是底部,另一个是第12列中的值“A1”作为顶部定义点。

Sub Thickness()
'
' Thickness Macro
' Transfer Thickness
'
' Keyboard Shortcut: Ctrl+o
Windows("data2.xls").Activate

Call FindLast(FinalRow)

Call FindTop(CurVal)



Do While CurVal <= FinalRow
     Windows("data2.xls").Activate
     Cells(CurVal, 8).Copy
     CurVal = CurVal + 1
     Windows("TestMacroProgram.xls").Activate
     Sheets("Sheet1").Select
     NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
     Cells(NextRow, 1).Select
     ActiveSheet.Paste
Loop

End Sub

Sub FindLast(FinalRow)
    FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
End Sub

Sub FindTop(CurVal)
    CurVal = FinalRow
    Do While Cells([CurVal], [12]).Value <> "A1"
    CurVal = CurVal - 1
    Loop
End Sub

1 个答案:

答案 0 :(得分:0)

问题是你没有从你正在调用的子函数中返回一个值,所以当你调用FindTop FinalRow的值为空时,从{返回}时会发生同样的问题{1}}因为FindTop子中的CurVal也为空。

如果我需要返回一些东西,我通常会添加一个全局变量,但我确信这是不赞成的,或者我只是将这些潜艇带入主要而不用担心它。我做了一些搜索,我相信下面的代码将适合您并返回正确的值。我无法完成Thickness但我能够返回两个值,所以它应该工作。我假设你想从Thickness返回CurVal

FindTop
相关问题