我现在有许多宏用于各种不同的工作簿。在大多数情况下,它们遍历列中的每个单元格并执行一些操作。
因为我使用不同的书籍,通常数据位于不同的地方,所以我通常用某种用户输入启动我的宏来告诉宏开始点在哪里(什么行和什么列)。
我在下面放了一个我通常使用的代码,允许用户选择一个单元格,然后使用左边和中间函数来剖析地址。这有效,但我不确定这是做我想做的最好的方式。
我的问题是,这样做最有效的方法是什么?到目前为止我遇到的挑战是我似乎需要将行号本身作为一个整数,因此我可以将它用作计数器,因此我使用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
答案 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
)的值,以确保您的用户只挑选了一个单元格。