[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルを入力しはじめるイベント』(タニ原)
マクロでセルにカーソルをもってきて、F2を押したときのイベントは何かとれますでしょうか。 セルに入力しはじめるイベントするときでもよいのですが、 Worksheet_Changeイベントでは遅すぎるので、入力開始時のイベントをとりたいです。
Worksheet_SelectionChange イベントで取得できませんか? (seiya)
(seiya)さんありがとうございます。 Worksheet_SelectionChange イベントを使っていたのですが、 セルを移動しないで、もう一度F2を押したときなどは SelectionChangeイベントがはしらないようなので 他に何かないかと思いまして。(タニ原)
何をなさりたいのかよくわかりませんが... Activeなセル(Target)をもう一度Activeにする、という事ですか?
KeyDownイベントは無かったような... (seiya)
わかりづらくてごめんなさい。こちらのページを良く拝見してるのですが、 こちらの投稿を参考に、わたしも同じような悩みがあったので、やってみたいと思ったのですが。
[[20060627165522]]『マクロで保存したあとに、、』(タンバリン)
こちらの投稿の最後にあったように、BeforeCloseイベントで行うと、 最後保存したくないときも、必ず保存しないと閉じられないという現象がでてきました。 私なりに考えてみて、BeforeSaveイベントでシートを保護して、 SelectionChangeイベントで保護を解除するというアレンジを加えてみたのですが、 保存したあとに、別のセルに移動したときはこれでうまくいっていたのですが、 保存した後、今カーソルがあたっているそのセルにまた入力したいと言う時だけ、 うまくいかない現象が発生したのです(;_;)。(タニ原)
もし「マクロを有効に開かせたい」が目的ならば、
1) ダミーシートを作成 2) BeforeCloseイベントで ダミーシートだけ表示して、他のシートは非表示 3) Workbook_Open イベントでダミーシートを非表示にして、他を表示
こんな方法もありますね (seiya)
(seiya)さん、新しい方法教えてくださってありがとうございます。 2)ではSaveをしないとだめでしょうか。(タニ原)
Saveする、しない は影響ないでしょう。(seiya)
(seiya)さんありがとうございます。以下のようなコードを書いたのですが、 マクロを有効にして、編集をして保存したあと、 最後に 閉じるときに 保存しますか?ときかれて 「はい」を選択すると、次にマクロを無効で開くときちんとダミーが出てるのですが、 「いいえ」を選択すると、次にマクロを無効で開くと、 本物が表示されてしまうようなのですが。 やり方が間違っていますでしょうか。(タニ原)
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets("本物").Visible = False Worksheets("ダミー").Visible = True
End Sub
Private Sub Workbook_Open()
Worksheets("本物").Visible = True Worksheets("ダミー").Visible = False
End Sub
試す前に、一度このブックを保存してありますか? (seiya)
はい。一度保存しています。 本物シートに編集して保存、その後以下のようになります。(タニ原) ↓ >その後、閉じるときに 保存しますか?ときかれて >「はい」を選択すると、次にマクロを無効で開くときちんとダミーが出てるのですが、 >「いいえ」を選択すると、次にマクロを無効で開くと、 >本物が表示されてしまうようなのですが。
やはりBeforeSaveにしないといけないようですね.... (seiya)
(seiya)さん、ありがとうございます。変なことをきいてしまってすみません。 Worksheet_SelectionChangeイベントに記載して、 保存したあと、もしまた同じセルに入力したいときは、 一旦、別のセルを選択してから入力するよう、ファイル使用者に促して見ます。 マクロを無効に開かれて、変な風にされるよりはよいので。 ご面倒なことお願いしてしまいすみませんでした。(タニ原)
まだ見られてるかどうかわかりませんが、試行錯誤してみました。 こんなんでいいのかなあ。 ThisWorkbookに貼り付けてください。 新規ブックに貼り付けたときの動きは試してないので、既存のブックに貼り付けてください。
Option Explicit Dim Flg As Boolean Private Sub Workbook_BeforeClose(Cancel As Boolean) If Flg = True Then Exit Sub End If If ThisWorkbook.Saved = False Then Select Case MsgBox("'" & ThisWorkbook.Name & "'への変更を保存しますか?", (vbYesNoCancel + vbExclamation)) Case vbYes Call ProtectSave Flg = True ThisWorkbook.Close False Case vbNo Flg = True ThisWorkbook.Close False Case Else Cancel = True End Select End If End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Call ProtectSave ActiveSheet.Unprotect Cancel = True End Sub
Private Sub Workbook_Open() ActiveSheet.Unprotect End Sub
Private Sub ProtectSave() ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True Application.EnableEvents = False ThisWorkbook.Save Application.EnableEvents = True End Sub
(やっちん)
(やっちん)さんできました。どうもありがとうございました! (seiya)さん、(やっちん)さん 本当にいろいろな案をご検討くださり ありがとうございました。とても助かり、また勉強になりました。(タニ原)
改良しました。 Option Explicit Private Sub Workbook_BeforeClose(Cancel As Boolean) If ThisWorkbook.Saved = False Then Select Case MsgBox("'" & ThisWorkbook.Name & "'への変更を保存しますか?", (vbYesNoCancel + vbExclamation)) Case vbYes Call ProtectSave ThisWorkbook.Saved = True Case vbNo ThisWorkbook.Saved = True Case Else Cancel = True End Select End If End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Call ProtectSave ActiveSheet.Unprotect ThisWorkbook.Saved = True Cancel = True End Sub
Private Sub Workbook_Open() ActiveSheet.Unprotect ThisWorkbook.Saved = True End Sub
Private Sub ProtectSave() ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True Application.EnableEvents = False ThisWorkbook.Save Application.EnableEvents = True End Sub
(やっちん)
Flgをやめて Saved プロパティを使用するように変更されたのですね。 ありがとうございました。(タニ原)
Flgは苦肉の策だったので(^^; ThisWorkbook.Saved = Trueにすると 保存するかどうかのMSGBOXが表示されないことに気付いたので直しました。 もう2箇所、ブックのオープンとセーブのみの場合にも ThisWorkbook.Saved = Trueにしています。 (やっちん)
(やっちん)さん、ありがとうございました。 おかげで、使用者にマクロを無効で開いて編集されることが これでなくなりました。本当にありがとうございました。(タニ原)
私のコードは保護のときにパスワードの設定まではしてませんが その辺りは大丈夫でしょうか? タニ原さんがご自分でカスタマイズされてそうな気もしますね(^^ (やっちん)
パスワード等の設定も大丈夫です。 どうもありがとうございました。(タニ原)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.