【问题标题】:For Each Loops Skips one Cell VBA对于每个循环跳过一个单元格 VBA
【发布时间】:2015-03-03 05:38:42
【问题描述】:

由于某种原因,跟随循环跳过了我想要复制数据的第二个单元格。变量 cw 只是与数据相关的日历周的数字。 X 代表工作表 ws 中的已有数据,Y 代表日历周之前放入工作表的数据。 “C”表示日历周变量复制到第二列时发生的情况,“a”是我用于偏移的点,M 表示与日历周对应的月份,但我还没有实现宏的一部分来做到这一点。因此,出于某种原因,即使我将偏移变量“i”增加 1,它也会跳过第二行并将 C 的其余部分向下移动。为什么它会跳过那个单元格,有什么建议可以解决这个问题?除了第二个之外,列中没有其他跳过的单元格。

r1 = 我从另一个工作表复制的范围 B7 = 下图中我要复制到的目的地的“a”

xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xaxxxxxxxx
mcyyyyyyyy
m yyyyyyyy
mcyyyyyyyy
mcyyyyyyyy
mcyyyyyyyy
mcyyyyyyyy
 c

Dim r As Range
Dim i As Integer
i = 1
Dim er As Range
Dim cw As Integer
cw = 42

For Each r In r1
   Set er = ws.Range("B7").End(xlDown).Offset(i, 0)
   er.Value = cw
   i = i + 1
Next r

【问题讨论】:

  • r1 是什么? B7在哪里?如果你能通过展示而不是告诉来明确你的工作表上的东西会有所帮助。

标签: vba excel for-loop


【解决方案1】:

我想你第一次这样做

Set er = ws.Range("B7").End(xlDown).Offset(i, 0)

er 成为您标记为a 的单元格

但是第二次 End(xlDown) 继续之前创建的c

正确的代码应该是:

Dim rngStart As Range
Set rngStart = ws.Range("B7").End(xlDown)

For Each r In r1
   Set er = rngStart.Offset(i, 0)
   er.Value = cw
   i = i + 1
Next r

【讨论】:

  • 没问题,有时只是添加一个额外的变量可以挽救你的生命:)
猜你喜欢
  • 1970-01-01
  • 2017-03-09
  • 2015-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2016-03-05
相关资源
最近更新 更多