我需要编写脚本,它允许我以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。如有任何建议,我将不胜感激。
发布于 2017-06-06 12:49:44
您确实应该避免使用与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
...
https://stackoverflow.com/questions/44399311
复制