2017-06-06 61 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 

...