• 締切済み

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

指定したセルに指定した範囲以外の数字を入力した時にエラーが出るという処理は 入力規則でできると思うのですが 計算結果には適用されませんよね? 具体的に言うと、 A1~A5の合計SUMをA6に出す場合、A6を入力規則で1~5としても A1=2 A2=2 A3=2 A4=2 A5=2 とするとA6に10と表示されてしまいます これをマクロで上の例だとA6の計算結果が1を下回る、もしくは5を上回った時点で警告を出して停止させるようにしたいです よろしくお願いします。

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

はてさて?あなたのブックがどうなってるのかなんて、ご質問に書いてないことは判りようもありません。 まずはまっさらのブックに回答通りに行って、結果を確認してください。 その後、あなたの実際のブックにあなたが仕込んだ一体何が悪さをしているのか、あなたご自身で探し当てて下さい。 そういうのがメンドクサイのなら、ご相談は「警告を出して停止させるようにしたい」だけですから。 回答のマクロを private sub Worksheet_Calculate()  if range("A6") < 1 or range("A6") > 5 then   msgbox "A6の値が範囲を逸脱しました"  end if end sub としてしまえば、あなたのブック(の内緒のナニカ)と干渉する心配も無くなります。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.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に数字を記入する。

tamago111
質問者

補足

詳しく書いていただきありがとうございます。 試しにやってみたところ、動作した後に 「エラー1004 Undoメソッドは失敗しました」 と出たのですが、これはどうすればいいか分かりますでしょうか・・? 何度もすみません

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

マクロを使用しなくても、入力規則で十分対応できます。 考え方を逆にすると見えてきます。 > A6を入力規則 ではなく、A1~A5に入力規則を入れます。 A1~A5を選択した状態で、   入力規制→数式:=AND($A$6<=5,$A$6>0) としてやると良いですよ。 絶対参照($)をお忘れなく^^

関連するQ&A

  • Excelマクロ 計算式を足していく

    Excel2003を使用しています。 マクロで、伝票を追加して行き、追加する度に合計のセルにある計算式を 前の伝票の計算式と合算させたいのですが、うまく行きません。 1枚目の合計 =Sum(A4:A17) 2枚目の合計 =Sum(A22:A35)+1枚目の合計 3枚目の合計 =Sum(A40:A53)+1枚目の合計+2枚目の合計 ※合計の計算式は18行毎に入ります。 伝票の枚数は決まっていませんので、何枚追加しても合算出来る様にと考えています。 Formulaを使ってセルの計算式を取得し、2枚目の計算式と合算は出来るのですが、 3枚目4枚目となっていく時の記述がイマイチうまく出来ません。 sikiA = Range("A18").Formula ←1枚目の合計 siki1 = sikiA & "+" & Cells(18 * cnt, 1) ←2枚目の合計と1枚目の合算 ※「cnt」は伝票の枚数です。 sumの部分は、伝票の追加の時点で計算式が入ります。 なので、伝票をコピー&貼り付けした時点で、合算している計算式を入れてしまった方が 良いのかなとは思いましたが、思うように行っていません。 よろしくご教授下さい。

  • [Excel]入力規則の数式が計算されずエラー表示も出ないようになりま

    [Excel]入力規則の数式が計算されずエラー表示も出ないようになりました お世話になります。(先日もこちらではお世話になりました。ありがとうございます。) EXCEL 2007 を使用しています。 入力規則を使用して数式を実行したいと思い 初めて[入力規則]-[ユーザー設定]-[数式]欄に数式を書いて結果を得ようと してみたのですがエラーとなってしまいました。 数式に間違いがあるらしいエラーだったため何度か数式を見直し・やり直したのですが、エラーでした。 入力規則ではなく普通のセルにこの数式を入れると問題なくほしい値が帰ってくるので、 なぜ入力規則では、エラーが出るのか分かりません。 また、何度も入力規則をやり直しているうちに エラー表示ウィンドウが出なくなりました。出ないだけなら成功したと思うのですが、 エラーウィンドウが出ないだけで、数式は実行されません。 入力規則の全ての値をクリアにしてから再度 設定、式を入力しても エラー表示ウィンドウも値も出てきません。 試しにA1セルに簡単な数式を入力規則で行ってみました。 =1+2+3 とか =SUM(B1:D1) (↑値は6になる) これでもエラーも数式の結果となる値もでません。 ちなみに入力規則のリスト表示など他の機能は問題なく値が帰ってきます。 何か間違っているのでしょうか? ちなみに入力規則に記入したかった数式は↓になります   =IF(INDIRECT("F"&ROW())>0,ROW()-2," ") 数式の説明: ・もしF列のこのセルと同じ行に何か値が入っていれば【行-2】になる値を表示   A3セル 入力規則を適用   F3セル 何か値が入っている   A3セル A3といのは3行目のことだから 3-2=1 となり、計算結果の 1 が表示される ・もしF列のこのセルと同じ行に何も値が入っていなければ空欄のままにする というものです。 お分かりになる方いらっしゃいましたらご教授下さい。 よろしくお願い致します。

  • マクロで計算式に入力

    マクロで計算式を入力するのに 例えばセルA1に『=SUM(B1:C1)』という式を入れる時に Range("A1").Formula = "=SUM(B1:C1)" というコードを書いて処理しています。 しかし『=IF(B1=1,"一です","")』というように文中に『"』があるような式を入力しようとするとエラーが出でしまいます。 &でくくったり色々してみたのですがうまくいきません。 何か方法があるのでしょうか。

  • 関数の計算結果を再度関数に組み込む方法は

    例えばです。  A) セルA1に 「10」、   セルB1に「20」  、 セルC1 に 「30」    の各々の数字が入力されていて、セルD1にSUM関数を使って、合計した    数値を入力するものとします。    セルD1には、SUM関数計算結果として「60」という数字が表示される。  ここからが、質問のポイントなのですが、  B)セルE1にセルD1に表示された「60」の18倍した計算を自動計算した結果を表示することはでいないのでしょうか。   あまりうまく表現できないのですがアドバイスしていただきたい点お分かりいただけたでしょうか。   別の表現の仕方をしますと、      セルD1、SUm関数   セルA1+セルB1+セルC1のSum関数の計算結果表示      セルE1          セルD1×18                           ※セルE1には、上記の「セルD1×18」の自動計算式を入力したいのですが、       首尾よく入力できません。   あまり要領よく質問できていないかもわかりませんが、よろしくお願いします。

  • エクセルで計算式の入力されているセルに直接入力もしたい

    エクセル2000での質問です。以下はセルA1,A2,A3を使った例です。 1.A1は以下の定められた単価のプルダウンリストがあり、選択します。    「空白」    「1000」    「2000」    「3000」 2.A2は個数を直接入力します。 3.A3セルに =A1*A2 と計算式を入力しています。 これでA3には合計金額が表示されますが、ここからが質問で私のしたいことです。 A1セルで「空白」が選択されている場合、A3セルに一式の金額として合計金額を直接入力したいのですが、直接入力をした時点でA3セルの計算式は消えてしまいます。しかし、A1セルの「空白」を「1000」に変更したと同時に、A3セルの計算式が復活して計算結果を表示する。 マクロを使わない方法でこのような方法を実現することは不可能でしょうか? 質問にA3セルの計算式が復活、と書いていますが、実際は計算式をセルに入力するのではなく、見えないところ(入力規則のような機能)に登録しておくといった方法があるかどうかになると思います。 以上、方法がありましたら回答よろしくお願いします。

  • Excel2002 入力規則「ユーザー設定」について教えて下さい

    今回はExcelの入力規則についてご質問させて頂きます。 B4・C4・D4・E4に数値が入力されています。 さらにE5に[=SUM(B4:E4)]と上4つのセルの合計を求めています。 これを踏まえて以下2点の条件でエラーメッセージを表示させたいのです。 (1)E5の値([=SUM(B4:E4)])が「1」以外であった場合  【合計が1になるよう入力して下さい】というエラーメッセージを表示。 (2)B4・C4・D4・E4のセルのうち、1つでも空白があればエラーメッセージを出さない。  (4つ全ての値が入力された時のみにエラーメッセージを表示する) 関数を使用してならば... [=IF(COUNT(B4:E4)<>4,"",IF(SUM(B4:E4)<>1,"合計が1になるよう入力して下さい",SUM(B4:E4)))] といった感じでしょうか? 今回はエラーのメッセージをセルではなく、ダイアログを出さなくてはならくて頭を抱えてしまった次第であります。 マクロについてはまったく知識がありません故、もしも入力規則で解決せず、マクロでご教示頂く場合はお手数ですがその詳細をお願い申し上げます。 勝手を言って申し訳ありません。 宜しくお願い致します<(_ _)>

  • Excel2007の入力規則についてお尋ねします。

    Excel2007の入力規則についてお尋ねします。 入力規則を設定する場合に、データの入力ダイアログボックスが 表示されその中に、同じ入力規則が設定されたすべてのセルに変更を適用するという個所がありますが、 同じ入力規則が設定されたすべてのセルに変更を適用するとはどういう意味なんでしょうか? 解答よろしくお願いします。

  • エクセルの入力規則について!

    エクセルでAの列1~20に入力規則により、その列に同じ数値を入力すると警告が出る様に設定しました。同じように重複してAの列1~20に数字の1~100までの数値以外を入力したら警告が出る様にも設定したいのです。 この様に入力規則を同じセルに複数設定できますでしょうか?お教えください。

  • Excelの「入力規則」を計算結果の値に適用する方法はありますか?

    エクセル2002を使っていますが、 入力規則を使って一定以上の値の入力があると はじくように設定は出来ますが、その値が数式の計算結果の値ではじくようにするにはどうすれば良いでしょうか? 「はじく」とはダイアログボックスで警告表示が出現するようにしています。 入力規則以外の機能で「警告表示」が出せるまたは、該当するセル表示を変更するにはどうすればよいでしょうか?

  • excel で計算式が入っているのに、計算結果が変

    excel で、セルに計算式(たとえば、SUM(A1:A5))が入っているのですが、 A1からA5の数字を変えても、計算結果が変わりません。 計算式が入っているセルをクリックして、 計算式を一回クリックすると、正しい計算結果になるのですが、 どうしてこんなことになってしまうのかわかりません。 解決法を教えてください。