電子書籍の厳選無料作品が豊富!

A1:C1~G1:I1をFor文を使ってセル結合したいのですが
何故かうまく動きません。

For x = 1 to 9 step 3
Range("Cells(x,1):Cells(x+2,1)").Merge
Next

で試したのですがデバックエラーになり。
For x = 1 to 9 step 3
Range("x&1":"x+2&1").Merge
Next
でもエラーでした。
本にもCellを両方動かすサンプルが無くて困ってます。

A 回答 (2件)

> With ActiveSheetは必須なのでしょうか。



動かない訳ではないのですが、明示的に指定する事を私は推奨します。
Cellsの前のピリオドが、ActiveSheetのCellsプロパティである事を表します。
With を使わないならこうなります。
Activesheet.Range(Activesheet.Cells(1, x), Activesheet.Cells(1, x + 2)).Merge

ちなみに With で括っておいて
Worksheet(S2).Range(.Cells(x, 1), .Cells(x + 2, 1)).Merge ではダメです。

アクティブシートの事なので単純に実行前にアクティブにする

S2 = "Sheet2"
Worksheets(S2).Activate
With Activesheet
 For x = 1 To 9 Step 3
   .Range(.Cells(1, x), .Cells(1, x + 2)).Merge
 Next
End With

又は直接 With で指定する

S2 = "Sheet2"
With Worksheets(S2)
 For x = 1 To 9 Step 3
   .Range(.Cells(1, x), .Cells(1, x + 2)).Merge
 Next
End With
    • good
    • 0
この回答へのお礼

ありがとうございます。
なんか解決できそうです。かなり助かりました

お礼日時:2006/07/21 21:04

"Cells(x,1):Cells(x+2,1)" が引数としておかしいのです。



With ActiveSheet
 For x = 1 To 9 Step 3
   .Range(.Cells(x, 1), .Cells(x + 2, 1)).Merge
 Next
End With

Cellsの行列指定が違うので、そのまま直すと A1:A3、A4:A6、A7:A9を結合するけど。

この回答への補足

ありがとうございます。
Range(.Cells(x, 1), .Cells(x + 2, 1)).Merge
だとA1:A3、A4;A6になっちゃうのですか(゜o゜)
横方向に結合したいのですが、
Range(.Cells(1, x), .Cells(1, x+2)).Merge
でいいですかね。
あと、With ActiveSheetは必須なのでしょうか。
実は違うシート(sheet2)の行を結合させたいと考えてます。
With ActiveSheet
 For x = 1 To 9 Step 3
   Worksheet(S2).Range(.Cells(x, 1), .Cells(x + 2, 1)).Merge
 Next
End With
てな感じでよろしですかね

補足日時:2006/07/20 22:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!