Excel VBA質問箱 IV

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

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


8727 / 13646 ツリー ←次へ | 前へ→

【31501】複数シートでの計算処理ループ使用? めいすい 05/11/23(水) 19:41 質問[未読]
【31502】Re:複数シートでの計算処理ループ使用? かみちゃん 05/11/23(水) 19:58 回答[未読]
【31523】Re:複数シートでの計算処理ループ使用? めいすい 05/11/24(木) 14:40 質問[未読]
【31543】Re:複数シートでの計算処理ループ使用? かみちゃん 05/11/25(金) 0:15 回答[未読]
【31544】Re:複数シートでの計算処理ループ使用? めいすい 05/11/25(金) 7:55 お礼[未読]
【31503】複数シートでの計算処理ループ使用? めいすい 05/11/23(水) 20:04 質問[未読]
【31504】Re:複数シートでの計算処理ループ使用? かみちゃん 05/11/23(水) 20:07 発言[未読]
【31505】Re:複数シートでの計算処理ループ使用? めいすい 05/11/23(水) 20:21 お礼[未読]

【31501】複数シートでの計算処理ループ使用?
質問  めいすい  - 05/11/23(水) 19:41 -

引用なし
パスワード
   お世話になります。
仕事で使用しているシートにマクロを作った(シート1枚のみに適用)んですが、ブック内のシートにも同時に展開できるようにしたいのです。
こちらのサイトで探してみたんですが、見当たりません。
ご教示願います。

内容は

Sub 生産実績数値変更()
Dim 目標値1h As Range
Set 目標値1h = Range("c18")
Dim 直当り As Range
Set 直当り = Range("g9")
Dim 累計1h As Range
Set 累計1h = Range("d19")
Dim 累計2h As Range
If 累計1h = 直当り Then            
  Range("c20").ClearContents         
ElseIf 累計1h <= 直当り - 累計1h Then     
  Range("c20") = 目標値1h          
Else                      
  Range("c20").Value = 直当り - 累計1h    
End If
End Sub
という数式になっています。(累計10Hまで同じ数式のパターンで繰り返しのため省略しています。)
この数式を複数の同フォームに一度に展開させたいのですが、教えていただけないでしょうか?よろしくお願いします。

【31502】Re:複数シートでの計算処理ループ使用?
回答  かみちゃん  - 05/11/23(水) 19:58 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>仕事で使用しているシートにマクロを作った(シート1枚のみに適用)んですが、ブック内のシートにも同時に展開できるようにしたい

複数のシートを処理する方法として、次の3パターンが考えられます。

Sub Macro1()
 Dim ws As Worksheet
 
 'すべてのシートを処理する場合
 For Each ws In Worksheets
  ws.Activate
  MsgBox ActiveSheet.Name
  Call 生産実績数値変更
 Next

 '特定のシート(例:Sheet2)以外のすべてのシートを処理する場合
 For Each ws In Worksheets
  If ws.Name <> "Sheet2" Then
   ws.Activate
   MsgBox ActiveSheet.Name
   Call 生産実績数値変更
  End If
 Next

 '特定のシート(例:Sheet1、Sheet4)のみ処理する場合
 For Each ws In Worksheets(Array("Sheet1", "Sheet4"))
  ws.Activate
  MsgBox ActiveSheet.Name
  Call 生産実績数値変更
 Next

End Sub

Sub 生産実績数値変更()
 '〜記述省略〜
End Sub

【31503】複数シートでの計算処理ループ使用?
質問  めいすい  - 05/11/23(水) 20:04 -

引用なし
パスワード
   すみません、追加補足です。
目標値1Hは=INT(3600/$R$9)という数式が入っており($R$9は秒で月ごとに変動します)ます。直当りは1日に生産する数です。
マクロはまったくの初心者です。
お手数おかけしますがよろしくお願いしますm(_ _"m)

【31504】Re:複数シートでの計算処理ループ使用?
発言  かみちゃん  - 05/11/23(水) 20:07 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>目標値1Hは=INT(3600/$R$9)という数式が入っており($R$9は秒で月ごとに変動します)ます。直当りは1日に生産する数です。

おっしゃっている意味がよくわかりません。
その数式を各シートに設定していきたいということなのでしょうか?
あらかじめ各シートに設定しておけばいいのではないでしょうか?

【31505】Re:複数シートでの計算処理ループ使用?
お礼  めいすい  - 05/11/23(水) 20:21 -

引用なし
パスワード
   ▼かみちゃん さん:
こんにちは。
すみません、説明不足でした。
あらかじめ関数がそのセルに入っています。

早速試してみます、ありがとうございますm(_ _"m)

【31523】Re:複数シートでの計算処理ループ使用?
質問  めいすい  - 05/11/24(木) 14:40 -

引用なし
パスワード
   ▼かみちゃん さん:
こんにちは!
もうひとつ質問があります。
特定のシート以外のすべてのシートを処理する場合ですが、特定のシートが2枚あった場合の式はどうなりますか?

> '特定のシート(例:Sheet2)以外のすべてのシートを処理する場合
> For Each ws In Worksheets
>  If ws.Name <> "Sheet2" Then
>   ws.Activate
>   MsgBox ActiveSheet.Name
>   Call 生産実績数値変更
>  End If
> Next
お手数おかけしますが、ご教示お願いします。

【31543】Re:複数シートでの計算処理ループ使用?
回答  かみちゃん  - 05/11/25(金) 0:15 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>特定のシート以外のすべてのシートを処理する場合ですが、特定のシートが2枚あった場合の式はどうなりますか?

除外するシートが複数枚ある場合のことでしょうか?
その例も書いておかないといけませんでしたか。

 '特定のシート(例:Sheet2、Sheet3)以外のすべてのシートを処理する場合
 For Each ws In Worksheets
  If ws.Name <> "Sheet2" And ws.Name <> "Sheet3" Then
  '〜以降省略〜

です。

【31544】Re:複数シートでの計算処理ループ使用?
お礼  めいすい  - 05/11/25(金) 7:55 -

引用なし
パスワード
   ▼かみちゃん さん:
ありがとうございます!
ANDで条件式をくくるんですね!
すみません、お手数おかけしました、ありがとうございましたm(_ _"m)

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