我需要编写脚本,允许我以xml格式导入数据。它为除变量之外的每个订单生成我需要的代码块。我需要遍历范围内的所有行并从列“G”获取值。问题是它只获得范围内第一行的值。
Dim rng As Range, row As Range
Set rng = Range(Range("G11"), Range("G11").End(xlDown))
For Each row In rng.Rows
Dim partner_id As String
partner_id = Cells(rng.row, 7).Value
line9 = "<typ:id>" & partner_id & "</typ:id>" & vbNewLine
...
我不是一个程序员,你可以看到,但我真的需要得到那个partner_id。我很感激任何建议。
答案 0 :(得分:1)
您确实应该避免使用与Excel对象使用的常用方法相同的变量名称,例如,将row
更改为myRow
。然后,这将突出显示我认为导致您的问题 - 使用rng.row
,使用重命名的变量,您可能会写为rng.myRow
- 这将导致编译错误。
rng.row
只是返回rng
中第一个单元格的行号,而与名为row
的变量无关。
Dim rng As Range, myRow As Range
Set rng = Range(Range("G11"), Range("G11").End(xlDown))
'There's no need to use "rng.Rows" when each row is a single cell anyway
For Each myRow In rng
Dim partner_id As String
'because myRow is a single cell, we can just use its Value
partner_id = myRow.Value
line9 = "<typ:id>" & partner_id & "</typ:id>" & vbNewLine
...
FWIW - 保持变量名称和编码样式不变,您可以使用row.Row
代替rng.Row
来修复代码,即
Dim rng As Range, row As Range
Set rng = Range(Range("G11"), Range("G11").End(xlDown))
For Each row In rng.Rows
Dim partner_id As String
partner_id = Cells(row.Row, 7).Value
line9 = "<typ:id>" & partner_id & "</typ:id>" & vbNewLine
...