首页 > 解决方案 > VBA Excel循环用于复制多个表并更改字符串

问题描述

早上好,

我想开发一个循环,这将使我能够根据单元格值复制和粘贴大量表格。

在此处输入图像描述

如您所见,我将值设置为 3,并且已填充 3 个表(最小值为第一,这意味着始终保留 1 个表)。带有数字的字符串也已相应更改。

一切都会好的,但这个过程是手动的。我需要它作为一个循环。到目前为止我开发的是循环,它不能正常工作。我只为单元格“B43”获取所有副本。我需要这些副本每 13 步填充一次。如果第二列的范围从 B43 开始,另一列的范围应该从“B56”、“B69”、“B82”等开始。

 Sub CopyCabinet()
 Dim i As Integer
 Dim rg As Range, rg2 As Range, rg3 As Range
 Dim wr As Worksheet

 Set wr = Sheets("NIM & BADGER")

 Set rg = wr.Range("R27")
 Set rg2 = wr.Range("B30:W41")
 Set rg3 = wr.Range("C31")


 For i = 1 To rg Step 2
 With rg3
 .Value = "Level 4 Cabinet Details: Cabinet " & i + 1
 End With

 rg2.Copy _
    Destination:=wr.Range("D43")
 Next I

 End Sub

字符串也没有正确更改。

有什么办法可以解决吗?我在这里找到了一些合理的提示: 在 VBA Excel 中为多个输出复制和粘贴循环, 这意味着我必须设置新的范围,在其中重定向我的输入。我说的对吗?

标签: excelvbaloops

解决方案


你的推理有点在这里。如果您更改了一个值,然后将旧值复制/粘贴回它上面会怎样?眼睛真的什么也没发生。另外,如果将其复制B30:W41并粘贴到 D 列会怎样?它会变得不稳定。

因此,假设您想将手头的特定范围复制 x 次,您可以将代码重写为:

Sub CopyCabinet()

Dim i As Long
Dim rg As Range, rg2 As Range, rg3 As Range
Dim wr As Worksheet

Set wr = ThisWorkbook.Worksheets("NIM & BADGER")

With wr
    Set rg = .Range("R27")
    Set rg2 = .Range("B30:W41")
    Set rg3 = .Range("C31")

    For i = 1 To rg.Value - 1
        rg2.Copy .Range("B30").Offset(13 * i)
        .rg3.Offset(13 * i).Value = "Level 4 Cabinet Details: Cabinet " & i + 1
    Next
End With

End Sub

你仍然应该认识到你想要的结构,但是我想我在这里为你简化了一点。显然,我无法对此进行测试,因此如果这对您有用或者这里是否有任何问题,请报告。


推荐阅读