【发布时间】:2016-03-19 08:23:06
【问题描述】:
我在编写下面的宏时遇到问题。为了简化它,我删除了代码中所有不相关的部分以使其更容易。
Sub Macro1()
Dim a As Integer
For a = 2 To 21
Dim y As Integer
For y = 27 To 47
If InStr(Cells(a, y), “SUB”) > 0 Then
Range(Cells(a, y), Cells(a, (y + 2))).Select
Selection.Cut
Cells(a, 22).Select
ActiveSheet.Paste
End If
Next y
Next a
End Sub
发生的情况是,它正在剪切和粘贴 y=27 到 y=47 的所有范围,而不仅仅是通过 IF 语句的单元格。我怀疑这与为列标识符和行标识符使用变量有关,但不知道。
它应该做的是找到一个包含“SUB”的单元格,然后复制该单元格及其右侧的 2 个单元格并将它们粘贴到同一行,但第 22-24 列。
有人有什么想法吗?
【问题讨论】:
-
'将通过 IF 语句'。您是否检查过并非所有人都通过了if?使用 F8 单步执行您的代码,这样您就可以看到执行时发生了什么。
-
也许一些“代码的不相关部分”毕竟是相关的。您显示的代码相当简单(即使它使用
Select太多)并且没有说明您所描述的内容。 -
JZZ:仔细看,大部分单元格都是空白的,所以它们没有理由通过 if 语句。对约翰:我说代码的其他部分与问题无关,因为当它被剥离到这个问题时,我得到的问题与我从完整版本中得到的相同。
标签: string vba loops variables