首页 > 解决方案 > 基于单元格值的行数(循环复制)

问题描述

我想将我的地址列表与前页单元格中显示的号码同步。情况如下: 在此处输入图像描述

在 D41 单元格中,我有公寓的数量。现在,当我打开“地址列表”表时,我想让第一行立即复制 40 次(标记为红色)。我知道,它可以被描述为一个循环,这就是我尝试这段代码的原因:

  1. 原文出处:

使用 ID 更改重定位多个图像

 Private Sub AddressList()
 Dim i As Long
 Dim rg As Range, rg2 As Range

 Dim ws1 As Worksheet, ws2 As Worksheet

 Set ws1 = ThisWorkbook.Sheets("Frontsheet")
 Set ws2 = ThisWorkbook.Sheets("Address list")

 Set rg = ws1.Range("D15").Value


 For i = 1 To rg
 Set rg2 = ws2.Range("B2:R2")
 With rg2.Offset(i - 1, 0)
    .Top = .Top
    .Left = .Left

 End With

 Next I

 End Sub

在这里我收到错误 424:需要对象

我试过的另一个代码是:

 Sub AddressList()
  Dim i As Long
  Dim LastrowE As Long
  Dim rng As Range
  Dim rg As Range, rg2 As Range

  Dim ws1 As Worksheet, ws2 As Worksheet

  Set ws1 = ThisWorkbook.Sheets("Frontsheet")
  Set ws2 = ThisWorkbook.Sheets("Fibre drop release sheet")

  Set rg = ws1.Range("D32")
  Set rg2 = ws2.Range("A2:k2")

  For i = 1 To rg

  With rg2.offset(i - 1, 0)
     rg2.Copy _
       Destination:=ws2.Range("A3")
  End With

  Next I

  End Sub

它有效,但该行只复制一次。我想让它作为 Frontshet.D15 单元格中的状态复制 41 次。我怎样才能做到这一点?

在此处输入图像描述

标签: excelvbaloops

解决方案


因为您要粘贴的目的地始终是 A3:Destination:=ws2.Range("A3")它始终粘贴在 A3 中(单元格 D15 次)。

以下将复制范围 A2:K2 并将其粘贴到 A3 和以下D15单元格中。

Set rg = ws1.Range("D15")
Set rg2 = ws2.Range("A2:K2")

rg2.Copy Destination:=ws2.Range("A3").Resize(RowSize:=rg.Value)

推荐阅读