我正在研究一个宏来为我做一个重复的任务。为了给你一个清晰的视图,我准备了下面的初始宏(vba)代码以及它想要做的流程图:
这里是宏的叙述性描述:
如果宏没有找到任何"合并"在K列中的单词,它现在将调用Macro_Z。
Last = Cells(Rows.Count, "K").End(xlUp).Row
For i = Last To 1 Step -1
If (Cells(i, "K").Value) = "Merged" Then
Call macro_x
End If
Next I
列K的屏幕截图
我已经拥有上面的代码,但它无效。不知道为什么。你能帮忙指出错误或建议更好的代码吗?
答案 0 :(得分:1)
你可以添加简单的布尔变量来检查单词" MERGED"被发现了。
Dim Word_Found as Boolean
Last = Cells(Rows.Count, "K").End(xlUp).Row
For i = Last To 1 Step -1
If (Cells(i, "K").Value) = "Merged" Then
Call macro_x
Word_Found = True
i = LAST
End If
Next I
If Not(Word_Found) Then Call macro_z
以上代码可以从您的代码中修改。
下面的代码是看你的流程图。
While Not (Columns("K").Find("Merged") Is Nothing)
Call macro_x
Wend
Call macro_z
答案 1 :(得分:1)
您可以在Macro_X的末尾调用初始宏。 对于初始宏:
Sub checker()
Last = Cells(Rows.Count, "K").End(xlUp).Row
For i = 1 To Last Step -1
If (Cells(i, "K").Value) = "Merged" Then
Call macro_x
End If
Next I
Call macro_z
End Sub
for macro_x:
Sub macro_x()
'DO SOMETHING HERE
Call checker
End Sub
编辑:
For i = 1 To Last Step -1
答案 2 :(得分:1)
我看到的第一件事是你的单元格中的“合并”不是以大写字母开头,而是在你的代码中。
所以请改为此。
Last = Cells(Rows.Count, "K").End(xlUp).Row
For i = Last To 1 Step -1
If (Cells(i, "K").Value) = "merged" Then
Call macro_x
End If
Next I