首页 > 解决方案 > 我如何让这个 Excel 宏记录在下一行重复,直到没有更多数据

问题描述

我对 VBA 相当陌生,我想做的是让这个宏记录代码在单元格 1、单元格 2 和单元格 3 上重复,直到 A col 中没有更多的数据字段。基本上它应该复制 A1 中的单元格并复制到书 2 然后点击刷新数据然后将一些信息复制回 Book1 并从 A1 重复直到没有更多单元格的数据留在 A 列中

我曾尝试在线阅读以进行此操作,但无法弄清楚

Sub Macro1()
'
' Macro1 Macro
'

'
Range("A2").Select
Selection.Copy
Windows("Book2").Activate
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, 
SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.RefreshAll
Windows("Book1").Activate
Range("F2").Select
Windows("Book2").Activate
Range("K6").Select
Selection.Copy
Windows("Book1").Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, 
SkipBlanks _
    :=False, Transpose:=False
Windows("Book2").Activate
Range("L6").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Book1").Activate
Range("G2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, 
SkipBlanks _
    :=False, Transpose:=False
Range("G3").Select
End Sub

标签: excelvba

解决方案


你可以这样做:

Sub Macro1()
    Dim c As Range, sht2 As Worksheet

    'adjust sheet names as required    
    Set c = Workbooks("Book1").Sheets("Sheet1").Range("a2")
    Set sht2 = Workbooks("Book2").Sheets("Sheet1")

    Do while Len(c.value) > 0

        sht2.Range("A2").Value = c.value
        sht2.Parent.RefreshAll

        'fixed source cells
        c.EntireRow.Cells(6).Value = sht2.Range("K6").Value
        c.EntireRow.Cells(7).Value = sht2.Range("L6").Value 

        '...or last populated cells in K,L
        c.EntireRow.Cells(6).Value = sht2.Cells(rows.count, "K").End(xlUp).Value
        c.EntireRow.Cells(7).Value = sht2.Cells(rows.count, "L").End(xlUp).Value 

        Set c = c.Offset(1, 0) 'next cell down
    Loop


End Sub

推荐阅读