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

締切り済みの質問

Excel2003 マクロ 計算結果に入力規則を

指定したセルに指定した範囲以外の数字を入力した時にエラーが出るという処理は
入力規則でできると思うのですが
計算結果には適用されませんよね?

具体的に言うと、
A1~A5の合計SUMをA6に出す場合、A6を入力規則で1~5としても
A1=2 A2=2 A3=2 A4=2 A5=2
とするとA6に10と表示されてしまいます

これをマクロで上の例だとA6の計算結果が1を下回る、もしくは5を上回った時点で警告を出して停止させるようにしたいです

よろしくお願いします。

投稿日時 - 2013-02-02 20:41:51

QNo.7924661

困ってます

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

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

回答(3)

ANo.3

はてさて?あなたのブックがどうなってるのかなんて、ご質問に書いてないことは判りようもありません。
まずはまっさらのブックに回答通りに行って、結果を確認してください。
その後、あなたの実際のブックにあなたが仕込んだ一体何が悪さをしているのか、あなたご自身で探し当てて下さい。



そういうのがメンドクサイのなら、ご相談は「警告を出して停止させるようにしたい」だけですから。
回答のマクロを

private sub Worksheet_Calculate()
 if range("A6") < 1 or range("A6") > 5 then
  msgbox "A6の値が範囲を逸脱しました"
 end if
end sub

としてしまえば、あなたのブック(の内緒のナニカ)と干渉する心配も無くなります。

投稿日時 - 2013-02-03 00:01:59

ANo.2

既出回答で述べられている通り、入力規則は「数式の計算結果が変わる、その原因となった数字を入力するセル」に取り付けます。
これはマクロを使って同じことを試みる場合も、基本的には考え方は全く一緒です。


で。
マクロについて知りたいというのが今回あなたの直接のご質問なので、実際にマクロでやってみます。

手順:
A6の数式は事前に記入しておく
シート名タブを右クリック、コードの表示を選ぶ
現れたシートに下記をコピー貼り付ける

private sub Worksheet_Calculate()
 if range("A6") < 1 or range("A6") > 5 then
  msgbox "A6の値が範囲を逸脱しました"
  application.enableevents = false
  application.undo
  application.enableevents = true
 end if
end sub

ファイルメニューから終了してエクセルに戻る
A1:A5に数字を記入する。

投稿日時 - 2013-02-02 21:45:21

補足

詳しく書いていただきありがとうございます。
試しにやってみたところ、動作した後に

「エラー1004 Undoメソッドは失敗しました」

と出たのですが、これはどうすればいいか分かりますでしょうか・・?
何度もすみません

投稿日時 - 2013-02-02 22:23:33

ANo.1

マクロを使用しなくても、入力規則で十分対応できます。

考え方を逆にすると見えてきます。
> A6を入力規則
ではなく、A1~A5に入力規則を入れます。
A1~A5を選択した状態で、
  入力規制→数式:=AND($A$6<=5,$A$6>0)
としてやると良いですよ。

絶対参照($)をお忘れなく^^

投稿日時 - 2013-02-02 21:00:36

あなたにオススメの質問