2017-06-06 63 views
0

我需要编写脚本,它允许我以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。我将不胜感激任何建议。

回答

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 

...