從你原來的文章中不太清楚你需要什麼輸出。這裏是一個選項,可以幫助你開始:
Sub ConcatRanges()
Dim rangeOne As Range, rangeTwo As Range, rangeAll As Range, cl As Range, str As String
Set rangeOne = Worksheets("mysheet").Range("I27:K27")
Set rangeTwo = Worksheets("mysheet").Range("L27:N27")
Set rangeAll = Union(rangeOne, rangeTwo)
For Each cl In rangeAll
str = str & cl & "/"
Next cl
Debug.Print str //Output: 1/2/3/4/5/6/
End Sub
更新後
與合併範圍的處理可能會非常棘手。例如,合併範圍F1:H1
的值爲36M。要訪問該值,您必須引用合併範圍中的第一個單元格。例如:
Sub MergedRangeDemo()
Dim rng As Range, cl As Range
Set rng = ActiveSheet.Range("F1:H1")
For Each cl In rng
Debug.Print cl.Value, cl.Address
Next cl
//Output: 36M $F$1 <-- Only first cell contains the value
// $G$1
// $H$1
End Sub
鑑於這一點,你可以使用的rowIndex範圍(1)
串聯值:
Sub ConcatRangesUpdated()
Dim rangeOne As Range, rangeTwo As Range, rangeThree As Range, str As String
Set rangeOne = ActiveSheet.Range("F1:H1")
Set rangeTwo = ActiveSheet.Range("I1:J1")
Set rangeThree = ActiveSheet.Range("K1:L1")
str = rangeOne(1) & "/" & rangeTwo(1) & "/" & rangeThree(1)
Debug.Print str 'Output: 36M/40M/36M
End Sub
你什麼意思通過將它們連接起來做?看起來你正在試圖創建一個新的範圍,將範圍1除以範圍2? – brettdj 2011-12-21 12:57:45
「下標超出範圍」表示沒有工作表「mysheet」。 tempString不是一個對象,所以你不需要Set。你不能以這種方式選擇一個範圍。你想要細胞I27,J27和K27串聯?如果是這樣,請分別拿起它們。如果它們合併,請將它們稱爲I27。 – 2011-12-21 13:22:16