• ベストアンサー

マクロの実行について

エクセルで料金計算をする、セル1Aに開始時刻を入力しセル1Bに終了時刻を入力するとセル1Cに料金が出力されるというマクロファイルを作りました。 現状1Aと1Bを入力しマクロ実行のスイッチを押して1Cを出力する、というやり方をしているのですが、スイッチを押す手間を省くために、1Aを入力しておいて1Bを入力したらスイッチを押さなくても自動的に1Cが出力されるようにしたいと考えています。 そのような設定をすることはできますか? ご回答よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

ワークシートイベントプロシージャを利用すれば可能です。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target, Range("B1")) Is Nothing Then Exit Sub  ~料金計算処理~ End Sub

bensharman
質問者

お礼

ご解答ありがとうございます。 解決しました。

その他の回答 (4)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

シート見出しでシート名を右クリックし「コードの表示」で表示される画面に次のマクロを入力します。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 2 Then Exit Sub If Cells(Target.Row, "A") <> "" Then Cells(Target.Row, "C") = 計算式 End If End Sub

bensharman
質問者

お礼

ご解答ありがとうございます。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

ANo.3です。 説明を付けた方が良いかと思いましたので…… 以下の様にSubではなく、Functionでマクロを作成し、冒頭でA1,B1が空白かどうかのチェックを入れて置きます。 Function Sample(AA As Range, BB As Range)   Sample = ""   If AA = "" Or BB = "" Then Exit Function      '---ここに処理を書く      Sample = 処理で計算した料金  End Function で、シートのC1には以下の式を入れます =Sample(A1,B1)

bensharman
質問者

お礼

ご解答ありがとうございます。 Functionプロシージャは利用したことがありませんでしたが勉強してみます。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

そのマクロに少し手を加えてユーザ関数にしてしまえば?

bensharman
質問者

お礼

ご解答ありがとうございます。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

NO1です。 誤りがありましたので訂正します。 前回の1行目は次のコードに変更して下さい。 Private Sub Worksheet_Change(ByVal Target As Range)

bensharman
質問者

お礼

ご解答ありがとうございます。

関連するQ&A

  • エクセル マクロを自動実行

    仕事で使っている書式で、A1に「あいうえお」と入力すると、A2「あ」、B2「い」、C2「う」、D2「え」、E2「お」とMID関数で振り分け、入力後、A行を「表示しない」と「再表示」するマクロをボタンで実行するようにしています。 そこで、 この書式には必ず入力しなければならない項目があるので(非表示しない行のセル)、この項目に入力したら行の非表示マクロを実行し、空白なら行の再表示マクロを実行出来るようにしたくて調べているのですが見つかりません。 1クリックの手間を省く方法をご存知の方ご教示ください。 宜しくお願いします。

  • 値によって違うマクロの実行

    表題の質問をさせていただきます。よろしくお願いいたします。 A1セルには、別シートで計算された値が転記されるようになっており、1から45までのいずれかの数値が入っています。 その数値によって異なる動きをするマクロが3個あります。  1から15の時はマクロA  16から30の時はマクロB  31から45の時はマクロC おのおののマクロはフォームのボタンから実行できるように登録してあります。 現在はA1セルの数値を見て該当するボタンを押してマクロを実行しています。 たとえばA1の値が「25」の時はマクロCが登録してあるボタンCを押しています。 そこで質問させていただきたいのは 既存のボタンを撤廃し 新たに設置するひとつのボタンで3個のマクロを制御したいと思ったのです。 新たなマクロでA1の値を取得し、そのマクロ内で既存のマクロへ割り振るためには どのような記述をすればよいのでしょうか。 よろしくお願いいたします。

  • Excelマクロ 入力の有無を判定するマクロを組みたい

    はじめまして。 マクロの初心者です。 エクセルマクロを利用して、セルに何か入力(文字でも数値でも)がある場合の判定をしたいのですが、うまくいきません。 具体的には、 ・(A1セルが空白で)B1からC10セル(10個のセル)のいずれかのセルに何か入力された場合 → D1セルに"○"を出力。 ・(A1セルが空白で)B1からC10セル(10個のセル)のいずれかのセルに何も入力がない場合 → D1セルは"(空白)"。 ・但し、大前提として、A1セルに"×"が入力されている場合 → D1セルに"×"を出力。 (B1からC10セル(10個のセル)のいずれかのセルに何か入力されている場合でも、A1セルが"×"ならばD1セルは"×"とする) としたうえで、同様の判定を ・A11セルおよびB11からC20を判定しD11セルに結果を出力、 ・A21セルおよびB21からC30を判定しD21セルに結果を出力、 … と繰り返して、A100セルまで実行させたいと考えています。 (D1、D11、D21、D31、D41、D51、D61、D71、D81、D91の10個のセルに"○"、"×"、"(空白)"の結果を出力したいです) 過去の投稿や解説書などを参照にしているのですが、なにぶん本当に初心者のためうまくいきません、、、 どなたかお力添えをお願いします。

  • マクロの自動実行

    教えてください。 A1のセルの内容ををドロップダウンで選択するようにしてあります。 A1の内容によってB1のセルの内容を変更させたいと思っています。 通常はvlookup関数で対応するものを呼び出せばいいのですがB1セルに手動で入力することもあるので関数を書き込んで置けません。 そこでA1セルをドロップダウンで変更したときに自動でマクロ「変更」を実行して、C1セルにvlookupで呼び出してる内容をB1セルへ貼り付けできないでしょうか? よろしくお願いいたします。

  • こんなマクロを作るには

    マクロ初心者です。 以下のようなことをしたいときにマクロの方法を教えて頂けると助かります。 1)セルA1に、数値を入力。 2)セルB1に、A1の数値を使った複雑な計算を行う。 3)セルC1にある別の既定の数値とB1が同じなるまで、A1の数値を入力し直す。  (例えばA1は、0.1間隔で数値を入力していく) このようなものをマクロで設定したいです。 今はひたすらA1の数値を入力し直して対応しています。 なにとぞよろしくお願いいたします。

  • エクセルの「新しいマクロの記録」で相対的にセルを指定するには?

    基本的にマクロの知識はなく、「新しいマクロの記録」で記録したものを使うことしかできないレベルです。 現在カーソルがあるところをA1のセルとします。 マクロの記録を開始して、B1を指定し、計算式等を 入力します。で、マクロの記録を終了します。 希望としては、現在A2にカーソルがある状態で マクロを実行すると、B2に同様の計算式が入力されて 欲しいのですが、そのままやってしまうと、再度B1に データが入力されてしまいます。 どこかに相対的にセルを指定できるようなオプションが あったと記憶しているのですが、探し出せません。 ご存じの方教えてください。

  • エクセル マクロ 入力制限について

    検索で探したのですが、うまくヒットしないため、質問させていただきます。 エクセルのセル入力制限についての質問です。 D1セルが空白でなかったら、A1・B1・C1に入力できないようにする と言う条件です。 それを、D1セルだけでなく、行すべてに適用したいのですが、 (D2 に入力されていたら、A2・B2・C2を入力できなくする) マクロで処理できるでしょうか? マクロ実行は、オープンしたときに実行するようにしたいと考えております。 ご教授お願いします。

  • エクセルでセル入力とセル出力の自動化

    おそらくマクロで簡単に出来ることだと思うのですが、マクロを使ったことが一度もなくやり方がわからなく苦慮しています。 やりたいことは、簡単に述べると、 (1)セルA1に数字を入力(変数)すると、セルA2に計算結果が出る。 [つまり、A2にはA1を変数とする関数が入っている] (2)セルB1、セルB2、セルB3、…にはそれぞれ数値が入力されている。 [変数リスト] (3)変数リストにあるB1の数値をA1に入力して、その結果のA2をC1に書き出す。さらに、B2をA1に入力して、その結果のA2をC2に書き出す。以下、これを変数リストすべてについて実行する。 という感じのことです。この程度のことなら、初めから関数化してしまえばおしまいなのですが、実際A2の出力でやっている計算はシートを複数使うような大規模な計算なので、関数化するのは面倒です。そこで、手動でいちいち変数の入力と結果の出力を実行しておりましたが、それはそれで入力ミスや出力ミスもしそうですし、自動化できるならそれに越したことはありません。 そういうわけで、上記の作業を自動化する方法をご教授いただけたらと思います。どうぞよろしくお願いします。

  • 【EXCEL】あるセルにAという値が入力されたら既定範囲にマクロを自動実行したい

    「あるセルにAという値が入力されると,既定範囲にマクロを自動実行する」ということはできますか? たとえばB2に「欠席」という値が入ったらその下のB3~B8までセルを斜線にする.     C3に「欠席」という値が入ったらその下のC3~C8までセルを斜線にする. という感じです.マクロサイトもいくつかみたのですが分かりません.お願いします.

  • エクセルのマクロ

    セルA1に、a2からa90までの任意の文字を入力した後にマクロを実行します。 セルA1にa7と入力されている時はセルB1にa6と表示され、セルA1にa86と入力されている時はセルB1にa85と表示されるようなマクロを教えてもらいたいのですが。 B1は必ずA1の数字の部分が1つ少なくなるということです。      

専門家に質問してみよう