みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

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

締切り済みの質問

(マクロ)特定のセルを変更しようとしたら確認メッセージが出るようにしたい

表題の通りです。
http://oshiete1.goo.ne.jp/qa2534226.html
で質問してURLにある回答を頂いたのですが、まだわからないことがありますので教えていただけないでしょうか?
(すいませんが少々急いでおります)

わからないことは以下の通りです。お願いします。
一点目は
>Cells(toku_l, toku_c) = toku1 'デフォルトの値
となっていますがデフォルトの値に戻すのではなく、前回の内容に戻したいのです。
つまり、例えば現在入力規則でリスト1、リスト2、リスト3と3通り選べるようになっています。このときリストが現在リスト2の状態であったときにリスト3を選んだら、本当にこれでいいですかと表示が出てハイを押せばリスト3、いいえを押せばリスト2に戻るようにしたいのです。
教えていただいた方法では常にデフォルトの値になってしまいます。

二点目は、 If Not ((x = toku1) Or (x = toku2) Or (x = toku3))
という箇所ですが、これですとリストにない項目を入力してはじめて
then以降が実行される式だと思います。
つまり、リスト2からリスト3に選択したときTHEN以降が実行されないと思うのです。

投稿日時 - 2006-11-19 20:57:55

QNo.2549770

すぐに回答ほしいです

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

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

回答(1)

ANo.1

こんばんは。

前のは一旦、締めたほうがよいですね。

前のものも読んではいたのですが、私は、あえて、マクロにする理由が良く分かりませんでした。入力規則のリストですから、設定条件に合わせて、入力値を排除したほうが早いような気がしました。

こういうことですか? Const KISOKU の部分を適当に直してください。

Private Sub Worksheet_Change(ByVal Target As Range)
 Const KISOKU As String = "C2"  '入力規則の設定場所

 If Target.Address(0, 0) <> KISOKU Then Exit Sub
 Application.EnableEvents = False
 If MsgBox("本当にこれでよいのですか?", vbOKCancel) = vbCancel Then
  Application.Undo
 End If
 Application.EnableEvents = True
End Sub

投稿日時 - 2006-11-19 21:37:45

あなたにオススメの質問