【问题标题】:For loop between two sheetsFor循环在两张纸之间
【发布时间】:2019-07-09 12:44:54
【问题描述】:

我在运行 for 循环时遇到运行时间错误,从一张纸上复制值并将它们粘贴到另一张纸上。 这是我的代码;

 Option Explicit

 Sub TeknikerData()

 Dim Lag As String
 Dim lr1 As long
 Dim lr2 As Long
 Dim i As Integer
 Dim j As Integer
 Dim wh1 As Worksheet
 Dim wh2 As Worksheet

 Set wh1 = Sheets("Data")
 Set wh2 = Sheets("Dashboard")
 lr1 = wh1.Cells(Rows.Count, 4).End(xlUp).Row


 Lag = wh2.Cells(12, 1).Value

 For i = 2 To lr1
 If wh1.Cells(i, 4) = Lag Then
 wh1.Range(Cells(i, 2), Cells(i, 2)).Copy
 wh2.Range("B50").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats



  End If

  Next i



  End Sub

我知道在运行循环时激活正确的工作表似乎有问题,但我无法解决它

【问题讨论】:

  • 你从不使用j。那个循环是干什么用的?另外,哪一行会引发错误。看着它,wh1.Range(Cells(i, 2), Cells(i, 2)).Copy 看起来很可疑。为什么有两个 Cells(i, 2) 实例?

标签: excel vba loops for-loop


【解决方案1】:

您似乎已将 for 循环的上限声明为字符串而不是数字数据类型,请参见下文。

 Dim lr1 As String

应该改为

Dim lr1 As Long

我也注意到了

wh1.Range(Cells(i, 2), Cells(i, 2)).Copy

应该是

wh1.Range(wh1.Cells(i, 2), wh1.Cells(i, 2)).Copy

【讨论】:

  • 谢谢,改了……不过还是没解决问题。
  • 我不确定当我编辑原始帖子时它是否会发送通知,但请查看编辑:)
  • 我已经编辑了代码,但问题仍然存在,似乎在一张表中找到匹配结果并尝试将其复制并粘贴到另一张表时出现问题。
  • 因此,当您将数据从一个范围复制到另一个范围时,范围需要具有相同的大小,我认为在您提供的代码中,您只是选择一个单元格并尝试将其粘贴到面积更大?
  • 您可以从源工作表中复制单个单元格并将其粘贴到目标工作表上的单个单元格中,然后使用link自动填充
【解决方案2】:

你在哪一行遇到错误?

你的意思是在你的 for 循环中使用 j 吗?

wh1.Range(Cells(i, 2), Cells(i, 2)).Copy '<- are one of these i's supposed to be j?

【讨论】:

  • 实际上可能没有意义..但是它并没有改变问题
  • @Martinswe 查看 James 上面关于将 lr1 变量设置为字符串的回答。另外,你在哪一行得到错误?
  • 它可以正常工作到找到匹配结果然后暴露此运行时错误。问题是“wh1.Range(Cells(i, 2), Cells(i, 2)).Copy”
  • @Martinswe 您是否尝试使用这些 Cells 语句创建范围?试试 Cells(i,2)&":"&Cells(i,2)。另外,如果 j 从未使用过,它是什么意思?
  • 为了进一步澄清,错误声明是,“运行时错误 1004。Mehtod 'range of object _worksheet' failed”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
  • 1970-01-01
相关资源
最近更新 更多