2013-01-24 35 views
0

我想寫一些VBA,它在單元上重複執行一個動作,直到它到達工作表邊緣,例如列A,無論它從哪裏開始。我發現如果我告訴它重複的次數多於列的數量,我會在代碼嘗試移動到A列左側的列時出現錯誤。如何限制循環停止在A列?如何編寫Excel VBA代碼來重複,直到達到工作表邊緣?

例如,如果我用

For n = 1 To 5 
' 
ActiveCell.Offset(0, -1).Range("A1:A2").Select 
Selection.merge 

' 
Next n 

然後如果我開始這與G列單元格選定沒關係,但如果我在列F或更低選定單元格,它崩潰。

謝謝!

+0

你實際上不需要循環。只需找到單元格的當前位置(列),然後構建您的範圍,然後合併它。我們知道Col A總是Col 1 ... –

+0

@SiddharthRout,我把它看作一次合併兩個單元格,例如A1和A2,B1和B2等。似乎需要一個循環。 –

回答

1

這應該做你想做的。請注意,VBA的關鍵原則是幾乎不需要Select單元。 (雖然宏錄機不知道)。

Sub MergeEm() 
Dim n As Long 
Dim cellActive As Excel.Range 
Dim CellRow As Long 

Set cellActive = ActiveCell 
CellRow = cellActive.Row 
'Stepping backwards - not necessary, but in spirit with your original code 
For n = cellActive.Column To 1 Step -1 
    cellActive.Parent.Cells(CellRow, n).Range("A1:A2").Merge 
Next n 
End Sub 
+0

Doug很好,非常感謝。它工作正常,我會接下來弄清楚它是如何工作的!我對Basic最近的一些新變化很陌生,我有很多東西需要學習。 –

+0

+ 1可能我誤解了:)無論如何,任何作品的OP;) –

相關問題