Excel VBA質問箱 IV

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

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


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

【26287】複数シートにループで同じ処理をするには りん 05/6/30(木) 15:16 質問[未読]
【26288】Re:複数シートにループで同じ処理をするには ぴかる 05/6/30(木) 15:38 回答[未読]
【26316】Re:複数シートにループで同じ処理をするには りん 05/7/1(金) 11:52 質問[未読]
【26322】Re:複数シートにループで同じ処理をするには りん 05/7/1(金) 13:41 回答[未読]
【26325】Re:複数シートにループで同じ処理をするには りん 05/7/1(金) 14:30 お礼[未読]
【26329】Re:複数シートにループで同じ処理をするには ぴかる 05/7/1(金) 15:27 発言[未読]

【26287】複数シートにループで同じ処理をするには
質問  りん  - 05/6/30(木) 15:16 -

引用なし
パスワード
   こんにちは。教えてください。
ブックの中に5枚のシートがあります。
この5枚のシートには同じ形の表がそれぞれ5つ
入っているのですが、この表の右上端に更新日付けを
入れたいです。
しかし、この表は列が増えていく可能性があるので、
更新日付けを入れる場所は固定できません。

右端に入力されている最終列を
i = Worksheets("Sheet1").Range("IV6").End(xlToLeft).Column
このコードで求めて、そこからセル位置を特定して
更新日付けを入力するという方法を試しているのですが、
それぞれのワークシートにループで同じ処理をする
という部分のコードがよくわかりません。
どなたか教えていただけますでしょうか?
よろしくお願いします。

【26288】Re:複数シートにループで同じ処理をする...
回答  ぴかる  - 05/6/30(木) 15:38 -

引用なし
パスワード
   りんさん、こんにちは。

こんなんで、いかがですか?
Sub TEST()

  For I = 1 To Sheets.Count
    With Sheets(I)
      .Cells(6, .Range("IV6").End(xlToLeft).Column).Value = Date
    End With
  Next

End Sub

りんさんというHNの方が他にもお見えになりますので、今後は変更された方がいいと思います。

【26316】Re:複数シートにループで同じ処理をする...
質問  りん  - 05/7/1(金) 11:52 -

引用なし
パスワード
   ぴかるさん回答ありがとうございます。

ぴかるさんのコードを参考にして
作ってみたのですが、
セルを結合しようとすると、シート1は
ちゃんと動くのに、シート2以降は
セルを結合しようとするところで
うまく動きません。
どこが悪いのでしょうか??
コードはこんな感じです。

Sub 日付更新()

Dim retu As Long

For i = 1 To Sheets.Count
  retu = Sheets(i).Range("IV6").End(xlToLeft).Column
    With Sheets(i).Cells(2, retu)
      .Formula = Date
      .Font.Size = "18"
      .NumberFormatLocal = "yyyy""年""m""月""d""日"""
    End With
  Sheets(i).Range(Cells(2, retu - 1), Cells(2, retu)).Select
  Selection.Merge
  
Next

End Sub


>りんさんというHNの方が他にもお見えになりますので、今後は変更された方がいいと思います。

以後名前を変えます。すいません。

【26322】Re:複数シートにループで同じ処理をする...
回答  りん E-MAIL  - 05/7/1(金) 13:41 -

引用なし
パスワード
   こんにちわ。

>どこが悪いのでしょうか??

>  Sheets(i).Range(Cells(2, retu - 1), Cells(2, retu)).Select
>  Selection.Merge
Selectは、表示されているシートが対象となる上、RangeとCellsで参照しているシートが違っているのでエラーになるとおもいます。

Sheets(i).Range(Sheets(i).Cells(2, retu - 1), Sheets(i).Cells(2, retu)).Merge

↓これをWithでまとめて、

 With Sheets(i)
   .Range(.Cells(2, retu - 1), .Cells(2, retu)).Merge
 End With

>>りんさんというHNの方が他にもお見えになりますので、今後は変更された方がいいと思います。
>以後名前を変えます。すいません。
別に気にしなくてもいいとおもいます。他にもたくさんいますし<りん

【26325】Re:複数シートにループで同じ処理をする...
お礼  りん  - 05/7/1(金) 14:30 -

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

>Selectは、表示されているシートが対象となる上、RangeとCellsで参照しているシートが違っているのでエラーになるとおもいます。

そうだったんですね。
ようやく理解できました!
ありがとうございます。
またよろしくお願いします。

【26329】Re:複数シートにループで同じ処理をする...
発言  ぴかる  - 05/7/1(金) 15:27 -

引用なし
パスワード
   おふたりのりんさん、こんにちは。

フォローありがとうございました。解決となって良かったです。
また助けて下さいネ。

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