Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4628 / 13644 ツリー ←次へ | 前へ→

【55497】ブックをまたいだセルの結合 京梧 08/5/8(木) 10:25 質問[未読]
【55498】Re:ブックをまたいだセルの結合 kanabun 08/5/8(木) 10:35 回答[未読]
【55499】Re:ブックをまたいだセルの結合 京梧 08/5/8(木) 10:54 お礼[未読]
【55500】Re:ブックをまたいだセルの結合 kanabun 08/5/8(木) 11:06 発言[未読]

【55497】ブックをまたいだセルの結合
質問  京梧  - 08/5/8(木) 10:25 -

引用なし
パスワード
   みなさん、はじめまして。

題名に書いたブックをまたいだセルの結合をしたいのですが、なぜか、うまくいきません。

プログラムは下記のとおりです。

Private Sub CommandButton1_Click()
  
  Workbooks.Add
  
  ActiveSheet.Name = "AAA"
  
  Sheets("AAA").Select
  With Sheets("AAA")
    .Range(Cells(17, 12), Cells(18, 12)).Merge
    .Range(Cells(44, 1), Cells(44, 17)).Merge
  End With

End sub

というものを使ってやっていますが、Mergeの行でえらーを吐き出して、止まります。

Withを取ると、新しいブックではなく、古いブック側に結合セルができ、うまく動きます。

どうすればいいのでしょうか?
よろしくお願いします。

【55498】Re:ブックをまたいだセルの結合
回答  kanabun  - 08/5/8(木) 10:35 -

引用なし
パスワード
   ▼京梧 さん:
>  With Sheets("AAA")
>    .Range(Cells(17, 12), Cells(18, 12)).Merge
>    .Range(Cells(44, 1), Cells(44, 17)).Merge
>  End With

Cells にもシートを修飾してください
>  With Sheets("AAA")
    .Range(.Cells(17, 12), .Cells(18, 12)).Merge
    .Range(.Cells(44, 1), .Cells(44, 17)).Merge
>  End With

【55499】Re:ブックをまたいだセルの結合
お礼  京梧  - 08/5/8(木) 10:54 -

引用なし
パスワード
   返答ありがとうございます。

Cellsにもシートを付けるとできました。
なるほどです。

ブックやシートをまたいだ場合は、.Range()の中にCellsが入っている場合は、シートを付けるということですね。

わかりました。
解決しました。

ありがとうございました。

【55500】Re:ブックをまたいだセルの結合
発言  kanabun  - 08/5/8(木) 11:06 -

引用なし
パスワード
   ▼京梧 さん:
>ブックやシートをまたいだ場合は、.Range()の中にCellsが入っている場合は、シートを付けるということですね。

もちょっと解説すると、
京梧 さんは、
「コントロールツールボックス」のCommandButton をシート上に
配置し、「コードの表示」からワークシートモジュール内に
> Private Sub CommandButton1_Click()
というプロシージャを 書いているのだと思います。

そこで、Range や Cells の親シートを省略するとどういうことが
起きるかといいますと、
Sheetモジュールで Range や Cells の親を省略するとExcelは
シートはコードが記述してあるシートのことだと解釈します。
つまり Me.Range とか Me.Cells と解釈します。
それで
>  With Sheets("AAA")
>   .Range(Cells(17, 12), Cells(18, 12)).Merge
は、
 With Sheets("AAA")
   .Range(Me.Cells(17, 12), Me.Cells(18, 12)).Merge
と書いてあるのと同じことになり、
 あたらしいBookの「AAA」シートの「元のSheetのセル範囲」をマージせよ
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~~~~~
という意味不明な命令を発行しているので、
困ったExcel君がエラーを出して実行をストップした、
というわけです。
そういうわけで、
> Cells にもシートを修飾してください
また、セルを結合することが目的なのだから、
> Sheets("AAA").Select
Select する必要はさらさらありません。
Select に頼らない記述法を身につけてください(^^

4628 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free