我需要宏在Excel中的列中运行并运行TEST过程,直到单元格为空。 TEST过程始终以您选择的单元格结束。以下是它的手动外观,但我想将其编码为循环运行,直到列中的单元格" B"是空的。在此先感谢您的帮助。这是我现在正在做的事情(没有循环):
Sub NotLooped()
Windows("Pattern Scanv4.xlsm").Activate
Sheets("DATA").Select
Range("B2").Select
Application.Run ("TEST")
If ActiveCell.Offset(1, 0).Value = 0 Then
ElseIf ActiveCell.Offset(1, 0).Value > 0 Then
ActiveCell.Offset(1, 0).Range("A1").Select
Application.Run ("TEST")
End If
If ActiveCell.Offset(1, 0).Value = 0 Then
ElseIf ActiveCell.Offset(1, 0).Value > 0 Then
ActiveCell.Offset(1, 0).Range("A1").Select
Application.Run ("TEST")
End If
'etc.................
If ActiveCell.Offset(1, 0).Value = 0 Then
ElseIf ActiveCell.Offset(1, 0).Value > 0 Then
ActiveCell.Offset(1, 0).Range("A1").Select
Application.Run ("TEST")
End If
If ActiveCell.Offset(1, 0).Value = 0 Then
ElseIf ActiveCell.Offset(1, 0).Value > 0 Then
ActiveCell.Offset(1, 0).Range("A1").Select
Application.Run ("TEST")
End If
End Sub
答案 0 :(得分:0)
试试这个:
Sub Looped()
Dim sht As Worksheet, rng as Range
Set sht = Workbooks("Pattern Scanv4.xlsm").Sheets("DATA")
sht.Parent.Activate
sht.Select
Set rng = sht.Range("B2")
Do While Len(rng.value) > 0
rng.Select
TEST
Set rng = rng.offset(1,0)
Loop
End Sub
但是,如果您的代码不依赖于特定工作表处于活动状态或选择给定范围,那将会更好。
如果您修改TEST
Sub以添加Range参数,则可以将rng
直接传递给它。
即。而不是:
Sub TEST()
...do something with selection/activecell
你可以这样做:
Sub TEST(rng As Range)
...do something with rng
并将其称为:
TEST rng