• ベストアンサー

エクセル マクロ教えて下さい。

作成してあるマクロボタンを実行した時に下記の処理をしたい。 ●手順 1・表作成ボタン(作成済)をクリックする 2・MsBoxを表示する 3・Yesの時は、セルAIの数式を削除して表を作成する(マクロは作成済) 4・Noの時は、セルAIの数式を削除しないで表を作成する(マクロは作成済) 5・Cancelの時は何もしないで中止する ●手順2~5の記述を御指導お願い致します。 尚、表作成ボタンと表作成マクロは作成済です

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

こんばんは。 この前の続きですね。こんな感じでしょうか。 Sub start() Dim ans ans = MsgBox("セルA1の式を削除しますか?", vbYesNoCancel + vbQuestion, " お尋ねします。") Select Case ans Case vbYes ActiveSheet.Range("A1").ClearContents Case vbNo Case Else Exit Sub End Select MsgBox "ここで表作成のマクロを呼び出す。" End Sub

oguno
質問者

補足

merlionXX先生 ありがとうございました。 ●>この前の続きですね。 はいそうです。悪戦苦闘しています、宜しくお願い致します。 ● >MsgBox "ここで表作成のマクロを呼び出す。"と記述されていますので下記のように呼び出すマクロを3個記述しました。 End Select Call 貼付実行 ← WS1の値(B6:H5000)をWS2(B6:H5000)に値のみ貼り付ける。⇒完璧です Call 年間更新 ← WS2(B6:H5000)のデータをオートフィルターで順位を決定し年間表(WS2)の所定の位置WS2(P6:AB600)に表示する。⇒更新されない。 Call 月間表作成 ← WS1(B6:H5000)にデータを入力し、そのデータをオートフィルターで順位を決定し月間表(WS1)の所定の位置WS2(P6:AB600)に表示する。⇒完璧です End Sub ●結果 1・MsgBox の処理は完璧に出来ました。 2・Call 年間更新だけが更新されません。 ●御願 再度、ご教示をお願い申し上げます。 ●独り言 驚きました、PC関係から「古事記」、国旗等々、知識と教養の塊・・・。 この判らない老人に親切にして下さるのは、もしかしたら、「八百万(やおよろず)の神」のお一人かな・・・。 oguno

その他の回答 (3)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

Worksheets(2) と書いただけでは選択したことにならないのでは? 左から2つ目のワークシートを選択するなら Worksheets(2).Select あるいは Worksheets(2).Activate だと思いますが・・・。 あとは、千里眼じゃないのでわかりませぬぅ~。

oguno
質問者

お礼

merlionXX先生 誠に申し訳ございません。 お教えいただく立場にありながら、不注意でした。 見直しましたら、Worksheets(2).Select となっております。 「そのように、記述していればよろしいと」と、言っていただいたものと解釈し締め切らせていただきます。 度々の質問に御回答いただきました事感謝申し上げます。 また、質問させていただくことになると思いますが、よろしくお願い申し上げます。 本当にありがとうございました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

End Select 以下に Call 貼付実行 Call 年間更新 Call 月間表作成 End Sub と記述したけど、一番目のSub 貼付実行() と 三番目のSub 月間表作成() しか実行されないということでしょうか? 別にエラーで止まってしまうわけではないのですね? まさか Call 年間更新 の前に '(シングルクォーテーション)があったなんてことではないですよね? だとしたら、ニ番目のSub 年間更新() というマクロの記述に、エラーにはならないけど正常に作動しない何らかの問題があると考えるのが普通ではないでしょうか。 わたしは、残念ながら八百万の神々ではないので、見たこともないSub 年間更新()というマクロ にどのような問題があるのかわかりません。

oguno
質問者

補足

merlionXX先生 ● >エラーにはならないけど正常に作動しない何らかの問題があると考えるのが普通ではないでしょうか。 1.御言葉をヒントに色々考えて見ましたら、処理するワークシートが適切に選択されていないようなので、次のようにしましたら、処理が出来ました。 2.このような記述の方法でよいのでしょうか、御指導お願い致します。 Call 貼付実行 w orksheets(2) ← 追加 Call 年間更新 worksheets(1) ← 追加 Call 月間表作成

  • vvooo
  • ベストアンサー率33% (3/9)
回答No.1

参考になりますか。 Sub Test() Dim myAns As Long myAns = MsgBox("AAA", vbYesNoCancel, "BBB") Select Case myAns    Case 6       'Yesの時       'セルAIの数式を削除して表を作成するコード    Case 7       'Noの時       'セルAIの数式を削除しないで表を作成するコード    Case 2       'キャンセルの時       Exit Sub End Select End Sub

oguno
質問者

お礼

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