2017-04-25 62 views
1

我目前正試圖遍歷Excel表中的行並將列與其他一些硬編碼數據連接起來。現在我正在以手動方式進行操作,因爲我不知道如何使用Excel VBA進行連接。如何在Excel中使用for循環連接數組中的字符串vba

我的代碼看起來是這樣的現在:

myproperty =   Chr(34) & Worksheets(tbValue).Cells(6, 15).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 15).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 16).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 16).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 17).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 17).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 18).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 18).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 19).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 19).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 20).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 20).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 21).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 21).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 22).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 22).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 23).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 23).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 24).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 24).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 25).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 25).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 26).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 26).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 27).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 27).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 28).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 28).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 29).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 29).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 30).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 30).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 31).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 31).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 32).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 32).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 33).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 33).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 34).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 34).Value & Chr(34) & ";" & _ 
         Chr(34) & Worksheets(tbValue).Cells(6, 35).Value & Chr(34) & ":" & Chr(34) & Worksheets(tbValue).Cells(rrow, 35).Value & Chr(34) & ";" 

現在它是通過艱辛的道路全部填充,我要做到這一點使用一個for循環,但我不知道如何使用Excel來連接VBA。

我現在有一個for循環遍歷所有行,「rrow」是該行的迭代器。

任何人都知道如何連接所有這些與for循環?

回答

1

你正在尋找的循環大概是這樣的:

Dim c As Long 
myproperty = "" 
For c = 15 To 35 
    myproperty = myproperty & _ 
       Chr(34) & Worksheets(tbValue).Cells(6, c).Value & Chr(34) & _ 
       ":" & _ 
       Chr(34) & Worksheets(tbValue).Cells(rrow, c).Value & Chr(34) & _ 
       ";" 
Next 
+0

謝謝,我設法弄清楚了。這是像你的東西。 – decemberrobot

1

像這樣的事情

Sub x() 

Dim a() As Variant 

a = worksheets("Sheet1").Range("a1:a8").Value 
a = Application.Transpose(a) 

Debug.Print "'" & Join(a, "':'") & "'" 

End Sub 
+0

根據[VBA最佳實踐](http://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices),您應該使用完全限定的範圍,如'a = Worksheets(「Sheet1」) .Range(「A1:A8」)。Value' –

+0

with double quote'Debug.Print「」「」&Join(a,「」「」「」)&「」「」' – h2so4

+0

更好,因爲它避免了範圍循環。 – brettdj

0

我想這是,或多或少,你在找什麼。

Private Sub ConcatValues() 

    Dim MyProperty As String 
    Dim Fun() As String 
    Dim i As Integer 
    Dim Rl As Long 
    Dim R As Long, C As Long 

    i = -1 
    With Worksheets("tbValue") 
     ' find the last used row in column A 
     Rl = .Cells(.Rows.Count, "A").End(xlUp).Row 

     For R = 7 To Rl    ' start with row 7 (??) 
      i = i + 1 
      ReDim Preserve Fun(i) 
      For C = 16 To 35 
       Fun(i) = Fun(i) & Chr(34) & .Cells(6, C).Value & Chr(34) & _ 
         ":" & Chr(34) & .Cells(R, C).Value & Chr(34) & "; " 
      Next C 
      MyProperty = Join(Fun) 
      Debug.Print MyProperty 
     Next R 
    End With 
End Sub 

我不知道你想要處理串接字符串。所以上面的代碼只是將它輸出到立即窗口。您可以將其分配給單元格或將其輸出到文本文件。

注意:我試圖用分號作爲Join函數的分隔符。然而,VBA拒絕接受任何分隔符,可能是因爲最終引號Chr(34)。