こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【EXCEL2007】 VBA(マクロ)の編集

EXCEL初心者です。
マクロというものを最近知り、マクロ作成の練習をしているところです。

今こういったことで悩んでいます。

■『「上書き保存しますか」というメッセージ』で「いいえ」が押された場合に、
『「保存する」という動作をしない(Exit sub)』というソースを
書きたいが、どのようにソースを作成すればいいのか。

■現在こういった『VBA(マクロ)』を作成しています。

『(1)「B2」セルに文字を入力
(2)マクロ機能を登録した「ボタン」をクリック
(3)「B2」セルに入力した名称で「新しいブックを作成」
(4)そのブック名称で指定先に「保存」する。』

今のところ、「マクロの記録」でそういうプログラムを作ること自体は勝手にできてくれました。
「B2」セルに「SampleSheet」と入力して、ボタンを押せば、
「SampleSheet」という「名称」で「新しいブックを作成」することはできています。

■ですが、例えば「B2」セルに入れた名称が、『保存先にすでにあり』
「上書き保存しますか」というメッセージが出た場合、
上書き保存したくないので、「いいえ」ボタンを押すと
「エラーメッセージ」が出てしまいます。

そこで、
『「上書き保存しますか」というメッセージ』で「いいえ」が押された場合に、
『「保存する」という動作をしない、そのマクロ自体を終了する(Exit sub)』というソースを
書きたいんですが、どのようにソースを作成すればいいのかがわかりませんでした。

■参考ソースをのせていただけると助かります。

ご回答、よろしくお願いします。

投稿日時 - 2012-01-08 14:30:56

QNo.7232222

困ってます

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

>『「上書き保存しますか」というメッセージ』で「いいえ」が押された場合に、
>『「保存する」という動作をしない、そのマクロ自体を終了する(Exit sub)』というソースを
>書きたいんですが
少し発想を変えて
同じ名前のフィル名が存在するかどうかをチェックして
なければ、保存
あれば、保存するかどうかのメッセージ出して

ではダメなのでしょうか。
ファイルの有無は Dir関数が使えます。
http://www.officetanaka.net/excel/vba/file/file06.htm
を参考にしましたが

↓最初に、メッセージが出ないようにして
Application.DisplayAlerts = False
If Dir("C:\Sample\" & Range("B1").Valu) <> "" Then
 If MsgBox("同じ名前のファイルがありますが、上書き保存しますか", vbYesNo) = vbYes Then
ActiveWorkbook.SaveAs FileName:="C:\Sample\" & range("B1").Value
 End If
Else
ActiveWorkbook.SaveAs FileName:="C:\Sample\" & range("B1").Value
End If
Application.DisplayAlerts = True

投稿日時 - 2012-01-08 20:25:39

お礼

回答ありがとうございます!
お礼が遅れてしまって申し訳ありませんでした。

なるほど、発想の転換をすればよかったんですね。

こういった関数があるとは知らなかったので
本当に助かりました。

さっそく試してみたいと思います。

本当にありがとうございました!!!

投稿日時 - 2012-01-23 20:07:12

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問