0

どこから始めても、ワークシートの端、たとえば列 A に到達するまで、セルに対してアクションを繰り返し実行する VBA を書きたいと思います。コードが列 A の左側の列に移動しようとすると、列の数よりも多くの回数を繰り返すように指示すると、エラーが発生することがわかりました。列 A で停止するようにループを制限するにはどうすればよいですか?

たとえば、私が使用する場合

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

'
Next n

次に、列 G のセルを選択してこれを開始しても問題ありませんが、列 F 以下のセルを選択するとクラッシュします。

ありがとう!

4

1 に答える 1

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
于 2013-01-24T14:59:03.027 に答える