教えて!gooにおける不適切な投稿への対応について

閉じるボタンを無効化させたいです。
ユーザーフォームのではなくブック?ウィンドウ?のやつです。

シート上のコマンドボタンより閉じるようにし、
上書き保存をさせないようにしたいです。

×ボタンで閉じてもよろしいのですが、保存云々の表示が出ないようにし、
できるだけマクロの記述は少なくしたいです。(既に結構重めなので…)

一番したいことは上書きをさせないようにしたいです。

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

質問者からの補足コメント

  • うーん・・・

    回答ありがとうございます。
    >閉じるボタンの操作以外にも、…
    そこまでは考えていませんでしたが、キャンセルできないのであれば仕方がありませんね
    >マクロを利用する方法では…
    関数を使っておりそこに文字を入力して使わせるのですが、何度も使用するので入力する範囲のみ保護をきっております。
    開いたときににリセットをかけるような処理などは試してみたのですがPCのスペック不足により固まってしまうのでその手以外の方法を探してます。
    (ボタンによるリセットもあるのですがそっちは正常に動くようです...)

    No.2の回答に寄せられた補足コメントです。 補足日時:2016/05/30 11:20
  • うーん・・・

    回答ありがとうございます。
    >Cancel = True
    このように記述しますと、コマンドボタンで閉じれなくなります。
    >Call ActiveWorkbook.Close(SaveChanges:=False)
    これで保存ができなくなったのはいいのですが、どうやって閉じたらよいでしょうか?
    どうしてもしょうがないのであればこの記述をし保存せず閉じるようにするのですが...
    コマンドボタンにより閉じさせたいのです。
    欲を言って申し訳ないですが何とかなりますでしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/05/30 11:38
gooドクター

A 回答 (4件)

WorkbookのBeforeCloseイベントを実装する。



Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = True

End Sub
とすれば、無反応になります。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call ActiveWorkbook.Close(SaveChanges:=False)

End Sub
とすれば保存せずワークブックを閉じます。
この回答への補足あり
    • good
    • 3

ANo2です。



すみません、無知でした。

ANo1様の回答で、基本的にできますね。
あとはいろいろなケースを考慮して、対応すれば宜しいかと。

失礼いたしました。
    • good
    • 0
この回答へのお礼

試行錯誤の末それっぽい形になりました。
ありがとうございました。

お礼日時:2016/05/31 09:09

すんごいテキトーに書くと、



【Module1】
Private pCloseFlag As Boolean

Public Sub ResetCloseFlag()
pCloseFlag = False
End Sub

Public Function GetCloseFlag() As Boolean
GetCloseFlag = pCloseFlag
End Function

Private Sub SetCloseFlag(value As Boolean)
pCloseFlag = value
End Sub

Sub ボタン1_Click()
Call SetCloseFlag(True)

End Sub

【ThisWorkbook】
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Module1.GetCloseFlag() Then
Exit Sub
End If

Cancel = True
Call Module1.ResetCloseFlag
End Sub

とかしとけばいいのでは。

保存をどうのこうの制御したいなら、BeforeSave()でできますね。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True

End Sub

組み合わせて使えばどうとでもなりそうな気がします。
    • good
    • 1
この回答へのお礼

なんとかできるようになりました。
ありがとうございました。

お礼日時:2016/05/31 09:08

こんにちは



>閉じるボタンを無効化させたいです
>一番したいことは上書きをさせないようにしたいです。
閉じるボタンの操作以外にも、「ファイル」-「保存」とか、あるいは(通常なら)Ctrl+Sなどでも上書きできてしまいますよね。こちらは許可するおつもりなのでしょうか?

上書き保存等が発生した時にマクロ側でそれをキャッチできる仕組みはあります。(BeforeSaveイベント)
これを利用することで、ユーザに対してメッセージ等を出力することは可能ですが、ユーザの操作(=保存操作)をキャンセルする仕組みは無いようです。

>一番したいことは上書きをさせないようにしたいです。
マクロを利用する方法ではありませんが、元のファイルを「読み取り専用」にしておくとか、「ブックの保護」をかけておくなどの方法で、同様の目的が達成できるのではないかと思いますが、こちらではダメなのでしょうか?
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング