Excel VBA質問箱 IV

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

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


2050 / 13645 ツリー ←次へ | 前へ→

【70290】シートごとの繰り返し 初心者 11/10/30(日) 14:42 質問[未読]
【70291】Re:シートごとの繰り返し UO3 11/10/30(日) 15:14 回答[未読]
【70292】Re:シートごとの繰り返し ponpon 11/10/30(日) 15:23 発言[未読]
【70293】Re:シートごとの繰り返し ponpon 11/10/30(日) 15:26 発言[未読]
【70294】Re:シートごとの繰り返し 初心者 11/10/31(月) 1:01 お礼[未読]

【70290】シートごとの繰り返し
質問  初心者  - 11/10/30(日) 14:42 -

引用なし
パスワード
   ひとつのシート用に作った
マクロをすべてのシートに
行いたくて、調べて書き加えてみたのですが、

どうも繰り返してはいるようなのですが、
ひとつのシートの中だけで繰り返しているようで、
次のシートに進んでいません。
なにが問題なのでしょうか?


Sub Macro1()

Dim sh As Worksheet
For Each sh In Worksheets 

 
  Columns("A:A").Select
  Selection.Insert Shift:=xlToRight
  Columns("B:B").Select
  Selection.Insert Shift:=xlToRight

'途中略しました 

  Range("D37:E37").Select
  Selection.ClearContents
  
  Next sh
End Sub

【70291】Re:シートごとの繰り返し
回答  UO3  - 11/10/30(日) 15:14 -

引用なし
パスワード
   ▼初心者 さん:

こんにちは

標準モジュールで領域に何も修飾しなかった場合、アクティブシートとみなされます。
For Each でシートは取得できますが、それで、そのシートがアクティブになるわけではありません。
取得したシートを領域に修飾します。
なお、コード内のSelect/Selection。通常は、Sampleのように書きます。

Sub Macro1()

Dim sh As Worksheet
For Each sh In Worksheets


  sh.Columns("A:A").Select
  Selection.Insert Shift:=xlToRight
  sh.Columns("B:B").Select
  Selection.Insert Shift:=xlToRight

'途中略しました

  sh.Range("D37:E37").Select
  Selection.ClearContents
 
  Next sh
End Sub

Sub Sample()

Dim sh As Worksheet
For Each sh In Worksheets


  sh.Columns("A:A").Insert Shift:=xlToRight
  sh.Columns("B:B").Insert Shift:=xlToRight

'途中略しました

  sh.Range("D37:E37").ClearContents
 
  Next sh
End Sub

【70292】Re:シートごとの繰り返し
発言  ponpon  - 11/10/30(日) 15:23 -

引用なし
パスワード
   ▼初心者 さん:
>ひとつのシート用に作った
>マクロをすべてのシートに
>行いたくて、調べて書き加えてみたのですが、
>
>どうも繰り返してはいるようなのですが、
>ひとつのシートの中だけで繰り返しているようで、
>次のシートに進んでいません。
>なにが問題なのでしょうか?
>
>
>Sub Macro1()
>
>Dim sh As Worksheet
>For Each sh In Worksheets 
>
> 
>  Columns("A:A").Select
>  Selection.Insert Shift:=xlToRight
>  Columns("B:B").Select
>  Selection.Insert Shift:=xlToRight
>
>'途中略しました 
>
>  Range("D37:E37").Select
>  Selection.ClearContents
>  
>  Next sh
>End Sub

たぶんアクティブなシートだけに実行されているんだと思います。
シートを指定するといいと思います。


Sub Macro1()

Dim sh As Worksheet
For Each sh In Worksheets

   With sh
    .Columns("A:B").Insert Shift:=xlToRight
    
  '途中略しました
  
    .Range("D37:E37").ClearContents
   End With
 Next sh
End Sub

【70293】Re:シートごとの繰り返し
発言  ponpon  - 11/10/30(日) 15:26 -

引用なし
パスワード
   あらら。
ちんたら考えている間にUO3さんから的確な回答がついていました。

【70294】Re:シートごとの繰り返し
お礼  初心者  - 11/10/31(月) 1:01 -

引用なし
パスワード
   回答ありがとうございました。
ちょっと良く分かってないですが、
とりあえず試してみます。
ありがとうございます。

▼ponpon さん:
>あらら。
>ちんたら考えている間にUO3さんから的確な回答がついていました。

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