如何创建循环并始终移动到VBA中的下一个使用过的单元格

时间:2014-09-22 19:10:47

标签: excel vba excel-vba

我正在将数据从一个工作表复制到另一个工作表,使用宏进行转置和自动填充,但我想创建一个循环并让它始终选择下一个单元格(" A8"&&#34 ; B8")在上一个工作表(MF2)中被复制而不必手动更改单元格。这是我使用

的宏
Sub Test1()

    Sheets("MF2").Select
    Range("A8").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Sheet3").Select
    Columns("A").Find("", Cells(Rows.Count, "A")).Select
    ActiveSheet.Paste
    Sheets("MF2").Select
    Range("B8").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Sheet3").Select
    Columns("B").Find("", Cells(Rows.Count, "B")).Select
    ActiveCell.Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True

    Dim endRow As Long
    endRow = Cells(Rows.Count, "B").End(xlUp).Row
    Range("A1").End(xlDown).Select
    ActiveCell.AutoFill Destination:=Range(ActiveCell.Address & ":A" & endRow)
    Range("C1").End(xlDown).Select
    ActiveCell.AutoFill Destination:=Range(ActiveCell.Address & ":C" & endRow)

End Sub

1 个答案:

答案 0 :(得分:0)

有几件事。首先,不要激活并选择所有内容。使用变量存储对源和目标的引用。其次,Range.Copy采用可选的目标参数。你可以一举复制和粘贴。这是代码。

Sub Test2()

    Dim sourceSheet As Worksheet
    Set sourceSheet = Sheets("MF2")

    Dim sourceRange As Range
    Set sourceRange = sourceSheet.Range("A8")

    Dim destSheet As Worksheet
    Set destSheet = Sheets("Sheet3")

    Dim destRange As Range
    With destSheet
        Set destRange = .Columns(1).Find("", .Cells(.Rows.Count, 1))
    End With

    sourceRange.Copy destRange

End Sub

是的,我知道这完全没有回答你的任何问题。