循环宏并改变每个循环的范围

时间:2017-01-27 01:48:59

标签: excel vba excel-vba

我开始使用工作表“Med”,它在单元格A4:P9中具有公式/数据/格式。我需要将这些单元格复制到单元格A10(向下6行)。然后,我需要从另一个工作表“数据”中的信息中填写一些单元格。我需要重复这个次数与数据的数量相同!(A:A)-1每次复制信息时下降6行。

我需要填写的数据来自Sheet“Data”,并在Sheet“Med”中为每个副本移动一列。

我有代码来制作第一个副本,但是不知道从哪里开始。查看下面的代码,下一个副本将转到A16(从A10向下6行)。

工作表“Med”的范围也会增加6行,列将保持不变。

工作表“数据”的范围将在列上移动,行号将保持不变。

约旦

Sub Macro1()
    Dim wsData As Worksheet 
    Dim wsMed As Worksheet 
    Set wsData = Sheets("Data") 
    Set wsMed = Sheets("Med")

    'Copy data set
    wsMed.Range("A4:P9").Copy wsMed.Range("A10") 'Set Premium Values
    wsMed.Range("M11").Value = wsData.Range("C20").Value
    wsMed.Range("M12").Value = wsData.Range("C21").Value
    wsMed.Range("M13").Value = wsData.Range("C22").Value
    wsMed.Range("M14").Value = wsData.Range("C23").Value 'Set Assumptions
    wsMed.Range("L11").Value = wsData.Range("C24").Value
    wsMed.Range("L12").Value = wsData.Range("C25").Value
    wsMed.Range("L13").Value = wsData.Range("C26").Value
    wsMed.Range("L14").Value = wsData.Range("C27").Value 
End Sub

1 个答案:

答案 0 :(得分:3)

此宏运行代码三次

Sub Macro1()
    Dim wsData As Worksheet
    Dim wsMed As Worksheet
    Set wsData = Sheets("Data")
    Set wsMed = Sheets("Med")
    Dim i As Integer, j As Integer, x As Integer

    i = 10
    j = 3


    'Copy data set
    For x = 1 To 3 ' run 3 times
        wsMed.Range("A4:P9").Copy wsMed.Cells(i, 1) 'Set Premium Values
        wsMed.Range("M" & i + 1).Value = wsData.Cells(20, j).Value
        wsMed.Range("M" & i + 2).Value = wsData.Cells(21, j).Value
        wsMed.Range("M" & i + 3).Value = wsData.Cells(22, j).Value
        wsMed.Range("M" & i + 4).Value = wsData.Cells(23, j).Value 'Set Assumptions
        wsMed.Range("L" & i + 1).Value = wsData.Cells(24, j).Value
        wsMed.Range("L" & i + 2).Value = wsData.Cells(25, j).Value
        wsMed.Range("L" & i + 3).Value = wsData.Cells(26, j).Value
        wsMed.Range("L" & i + 4).Value = wsData.Cells(27, j).Value
        i = i + 6
        j = j + 1
    Next x

End Sub