【问题标题】:Run Error 2147352565(8002000b) - VBA运行错误 2147352565(8002000b) - VBA
【发布时间】:2014-07-16 12:26:22
【问题描述】:

我编写了下面的程序来复制用户创建的工作表中的值(直到 100 张)并粘贴到同一个名为“Ergebnisse”的工作簿上的另一个选项卡中 我没有按名称引用工作表,因为用户可以根据自己的意愿重命名。 问题是如果用户没有创建确切的 100 张,则会出现运行错误 2147352565(8002000b)。

有人知道我可以在程序中插入哪个条件来避免这个错误吗? 例如,用户只创建了 30 张工作表,因此程序忽略/跳过从第 35 行到第 104 行的复制和粘贴。

这可能是一个非常愚蠢的问题,但我对 VBA 非常陌生,所以如果有人可以帮助我,我将不胜感激!

'
'Insert Results
'
Sub Ergebnisse()


'Bauteilbewertung 100 Blätter
Sheets(4).[H3:W3].Copy Sheets(3).[H10:W10]
Sheets(5).[H3:W3].Copy Sheets(3).[H11:W11]
Sheets(6).[H3:W3].Copy Sheets(3).[H12:W12]
Sheets(7).[H3:W3].Copy Sheets(3).[H13:W13]
Sheets(8).[H3:W3].Copy Sheets(3).[H14:W14]
Sheets(9).[H3:W3].Copy Sheets(3).[H15:W15]
Sheets(10).[H3:W3].Copy Sheets(3).[H16:W16]
......... Till:
Sheets(104).[H3:W3].Copy Sheets(3).[H110:W110]


End Sub

我插入了,但没有用:

Sub Ergebnisse()

Dim ws As Worksheet
For Each ws In Worksheets

ws = Worksheet.Active

Do

 '(Code above)

Loop Until ws = Sheets(Sheets.Count).Active

Next ws

End Sub

【问题讨论】:

  • 您是否考虑过使用仅到达Sheets.Count 的循环?
  • 我插入了,但是没有用:Sub Ergebnisse() Dim ws As Worksheet For Each ws In Worksheets ws = Worksheet.Active Do Code above Loop until ws = Sheets(Sheets.Count).Active下一个 ws 结束子
  • 这不是有效的语法。在 VBA 中使用 for 循环搜索;我已经为你指明了你需要去的方向,但你需要花 60 多秒的时间才能到达那里。当您不知道工作表是否存在时,您显然不能使用ws = WorkSheet.Active。循环的全部目的是仅使用实际存在的那些,因此在 检查它是否存在之前尝试使用它是没有意义的。
  • 总是从sheet4开始吗?
  • 谢谢大家的帮助!

标签: excel vba


【解决方案1】:

这很简单,但希望你能明白:

Public Sub CopyValues()

  Dim count As Long
  Dim i As Long
  Dim j As Long

  count = Sheets.Count
  j = 10

  For i = 4 To count Step 1
    Sheets(i).[H3:W3].Copy Sheets(3).Range("H" & j & ":W" & j)
    j = j + 1
  Next i

End Sub

它将从 Sheets(4) 循环到 Sheets(count) 并将值复制到 Sheet3。

【讨论】:

  • 这真的很好用!!!我知道这可能是一个愚蠢的问题,但我真的是 VBA 的初学者。谢谢大家的回复和关注!
猜你喜欢
  • 1970-01-01
  • 2022-11-14
  • 1970-01-01
  • 2014-08-30
  • 2018-12-23
  • 2016-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多