【发布时间】:2016-07-05 22:00:20
【问题描述】:
我正在学习 VBA,但遇到了一些问题
我拥有的是日期列表: picture1
我想做的就是这样每天加三顿饭 picture2
我已经录制了一个可以实现这个的宏:
Sub InsertMeal()
ActiveCell.EntireRow.Insert
ActiveCell.EntireRow.Insert
ActiveCell.Offset(0, 2).Select
ActiveCell.FormulaR1C1 = "Breakfast"
ActiveCell.Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "Lunch"
ActiveCell.Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "Dinner"
ActiveCell.Offset(-2, -2).Range("A1:A3").Select
Selection.Merge
End Sub
现在我想编写一个宏,将这个 InsertMeal() 函数应用于所选范围内的每个单元格。
这是我写的
Sub ApplyToAll()
For Each c In ActiveCell.CurrentRegion.Cells
Call InsertMeal
ActiveCell.Offset(1, 0).Select
Next
End Sub
问题是,因为我每次都插入行,所以 For 循环不能正常工作。循环永远不会结束。现在我不知道如何“保持范围”以使循环正常工作。
如果您知道如何执行此操作,请提供帮助。谢谢,真的很感激。
【问题讨论】:
-
不相关但你有
InsertMeal然后InsertTime?编辑:为什么不在InsertMeal中使用循环? -
对不起,我更改了第一个函数名称,但是当我粘贴到 stackoverflow 时忘记更改第二个函数名称。请考虑这两个相同。
-
第二个问题没意见?如果没有原因,不要调用另一个子,只需循环原始子。
-
但它仍然不会结束循环。我认为这是因为
ActiveCell.CurrentRegion.Cells总是在变化? -
请编辑 OP/不要将代码放入 cmets。编辑:是的,您想要一个更好的循环,例如
for。