在一系列单元格上运行循环

时间:2018-02-15 11:50:17

标签: excel vba excel-vba loops

我有一个n个国家和一个宏xyz的列表。我想创建一个新的宏,它选择国家1并运行宏xyz,然后运行国家2并运行宏xyz ,,,,直到country n。我该怎么做?

2 个答案:

答案 0 :(得分:1)

这取决于您存储“n个国家/地区列表”的方式。 假设从标题中,您的国家/地区位于一系列单元格中(在col列中等于1,从1n的行等于100;您稍后会适应这个), 像这样的东西应该工作(我现在在Ubuntu下,我无法测试它)

Option Explicit

Dim i as Integer, n as integer, col as Integer, 
Dim c as String

n = 100
col = 1
'Dim r as Range
For i = 1 To n
    c = Cells(i,col).Value
    Call xyz(c)
Next i

PS:我刚刚发布了这个答案,假设这些国家/地区存储在一个字符串数组中。现在我根据标题更改了这个。

答案 1 :(得分:1)

嗯,你的“设计”很少:不要选择任何东西!如果要更改或对单元格值执行任何操作,请使用Cells.Value属性! Haing说,修改你的宏xyz以获取一个字符串参数:

Sub xyz(country As String)

如果你想改变一个细胞本身,你可以这样做:

Sub xyz(countryCell As Range)

现在,如果你想循环遍历范围,For Each循环可能会派上用场:

Sub FinalMacro()
Dim rng As Ragne, cell As Range

Set rng = Range("A1:A100") 'example range - enter the range conatining countries

For Each cell In rng
    Call xyz(cell.Value)
    'or Call xyz(cell)
Next
End Sub