为循环定义起始单元的最有效方法是什么?

时间:2016-04-05 14:45:48

标签: vba excel-vba excel

我现在有许多宏用于各种不同的工作簿。在大多数情况下,它们遍历列中的每个单元格并执行一些操作。

因为我使用不同的书籍,通常数据位于不同的地方,所以我通常用某种用户输入启动我的宏来告诉宏开始点在哪里(什么行和什么列)。

我在下面放了一个我通常使用的代码,允许用户选择一个单元格,然后使用左边和中间函数来剖析地址。这有效,但我不确定这是做我想做的最好的方式。

我的问题是,这样做最有效的方法是什么?到目前为止我遇到的挑战是我似乎需要将行号本身作为一个整数,因此我可以将它用作计数器,因此我使用Right和Mid函数。

Sub test()

Set myCell = Application.InputBox( _
prompt:="Select a cell", Type:=8)

i = Right(myCell.Address, 1)
col = Mid(myCell.Address, 2, 1)

Do

    Cells(i, col).Offset(0, 1).Value = "Test"
    i = i + 1

Loop Until Cells(i, col).Value = ""

End Sub

1 个答案:

答案 0 :(得分:1)

您可以在此处从myCell中提取行/列信息,稍后再重新组合以重新创建相同的范围:

i = Right(myCell.Address, 1)
col = Mid(myCell.Address, 2, 1)
Do
    Cells(i, col).Offset(0, 1).Value = "Test"
    i = i + 1
Loop Until Cells(i, col).Value = ""

会缩短为:

Do While myCell.Value <> ""
    myCell.Offset(0,1).Value = "Test"
    Set myCell = myCell.Offset(1, 0)
Loop

无需从myCell

中提取行和列

也可以检查myCell.Count(或.CountLarge)的值,以确保您的用户只挑选了一个单元格。