• 締切済み

マクロの自動実行

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

みんなの回答

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

> C1セルにvlookupで呼び出してる内容をB1セルへ貼り付けできないでしょうか? 「簡単に」できますよ。基礎の基礎で作れるマクロの一つです。 #1さんもおっしゃる通り、 「A1セルの内容が変更されたら、(別にC1セルを介さずに、)  B1セルにVLOOKUPで拾った内容を入力する」 というマクロを作れば良いだけです。 If Target.Address = "$A$1" Then Range("B1") = WorksheetFunction.VLookup(Range("A1"), Range("A2:C13"), 3, False) 処理の内容としては、この1行だけです。 こうすれば、B1セルに(あるいはC1セルに)式を「無駄に」残さなくても済みます。 ただし。 (結論は#1さん同様なのですが)#1さんの観点と別な方向から。 このマクロを実装すると、 「B1セルに正しい値(文字列含む)が入っていても、  A1を更新するとB1まで更新されてしまい、二度手間発生」 という事態に陥ります。 もちろん、コレを回避する書き方も可能ですが、 そうすると今度は「何が正しいのか」を判断するための構文も組み込まなければいけません。 上記にちょこちょこっと書き加えてやれば出来ますが、 それを判断するためのコードはおそらくそれなりにややこしいでしょう。 それならば、#1さんもおっしゃる通り、 「手入力用のセルは別の“セル”に用意(例えばB2セルなど)」して、 B1セルには「=IF(B2="",VLOOKUP(A1,範囲,列番号,FALSE),B2)」とでもしてやる方が ややこしいマクロを組むことに比べると、はるかに楽です。 管理するのも楽です。

  • chie65535
  • ベストアンサー率43% (8517/19361)
回答No.1

セルの内容が変更された時に自動で呼ばれるマクロ関数に、マクロを書けば可能です。 変更されたセルがA1だった時だけ、C1の値をB1に代入するだけです。 でも。 >通常はvlookup関数で対応するものを呼び出せばいいのですがB1セルに手動で入力することもあるので関数を書き込んで置けません。 「どうしても、手入力はB1でやらないと駄目」ですか? 「どこか別のセルに、手入力専用のセルがあって、手入力したい時は、その手入力専用セルに入力する」じゃ、駄目なんですか? 例えば、C3セルを「手入力用セル」に出来るのであれば、B1セルにIF関数で「C3に何か入力してあればC3の値に、さもなければ、A1の内容に従ったVlookup関数の値に」なるような式を書くだけで済みますが。 「入力用のセルが邪魔」と言うなら、印刷範囲の外に置くとか、印刷時は行の高さや列の幅を0にするとか、方法は沢山あります。

関連するQ&A

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

    表題の通りなんですが、エクセルで、あるセルに指定された数値(語句)が入った場合に、それを自動的に感知して実行するマクロがあればと思うのですが、そういったことってできるのでしょうか。 具体的には、  1、バーコードリーダーで数値をセルに入力  2、その数値に対応する名前をvlookup関数にて表示  3、その名前が入力された時点でマクロが自動的に実行 と言うものです。  3の部分がよく分からずに困っています。できるかどうか分かりませんが、もしできるようであるならその方法を教えていただければありがたいです。どうか、よろしくお願いします。

  • マクロの使い方

    VLOOKUP関数で、あるセルに自動的に表示させようと思います。しかし表示される項目の選択肢にないものを、同じセルでドロップダウンリストから選択するようにもしました。このリストから選択すると、上書きされてVLOOKUP関数は消えてしまうのでしょうか。 入力前の状態に戻す(リセット)マクロをつくったんですが、マクロでリセットすると、このセルはクリアされずにリストから選択した項目が残ったままになりました。 あるセルに「関数」と「リストから選択」の2種類はおけないということでしょうか? わかりにくい説明ですみませんが教えてください。

  • マクロの自動実行について

    マクロの自動実行についてお伺いします。 今、エクセルに一定のデータを貼り付けたら、(例えばナンバーを元に)自動的にソートされるマクロを作ろうとしてます。 以下流れになります。 **************************** 以下貼り付け(エクセル以外からの元データ) (プログラムの詳細は分かりませんが、エクセルなどにコピペできるものらしいです。) 1|Aさん 3|Bさん 2|Cさん ~ N|XXさん ↑をエクセルをシートに貼り付けしたら、別シートにソートされて 1|Aさん 2|Cさん 3|Bさん ~ N|XXさん という表が出来上がる。 **************************** 自動実行だとworksheet_changeというイベントがあるようですが、特定の範囲なりセルなりが指定されてる場合にいきる処理のように見えます。 そんなに広範囲ではないことは予想できますが、はっきりとしたデータの範囲も量も分からない場合、ループで範囲を覚え、それをソートするのがいいのでしょうか。 ちょっと質問が曖昧な気もしますが、アドバイスお願いします。

  • マクロの自動実行

    Private Sub Worksheet_Calculate() Range("b1").Value = Range("b1").Value + Range("a1").Value End Sub このマクロをA1セルの数値が変わるたびに自動で実行するには どうすればいいでしょうか?

  • セルの値が変ると自動でマクロが実行される。

    セルの値が変ると自動でマクロが実行されるVBAを教えて下さいm(_ _ )m 例えば、シート1のA1の値が変ると、マクロAが実行される。 シート1のA2の値が変ると、マクロBが実行される。 と一つのシート内に複数のイベントを設置したのですが、イマイチわかりません。 知恵をお貸し下さい。

  • EXCL のマクロ自動実行(イベントによる)についてお教えください。

    EXCL のマクロ自動実行(イベントによる)についてお教えください。 エクセルのあるセル(たとえばA1セル)に入力するとマクロが自動実行する方法をお教えください。 よろしくお願いいたします。

  • ExcelのマクロによるVLOOKUPの参照シートの変更について

    ExcelのマクロによるVLOOKUPの参照シートの変更について ブックAのSheet1のセルA1にドロップダウンリストを作成し、アルファベットの"J"、"M"、"A"が選択できるようにしてあります。 ブックAのSheet2のセルB1には、以下の式が入力してあり、別のブック(ブックB)から情報を読み込んでいます。 =VLOOKUP(A1,'¥¥s_g¥欠席¥[ブックB.xls]国語'!$B$4:$V$30,4,FALSE) やりたい事は↓ ブックAのSheet1のセルA1にある、ドロップダウンリストを変更すると、ブックAのSheet2のセルB1にある式(上記式)の参照シート(上記式では「国語」の部分)が変更さえるマクロを作りたいのですが、うまくできません。 ちなみに、ドロップダウンリストの"J"を選択した場合は、ブックBのシート"国語"を参照し、リストの"M"を選択した場合は、ブックBのシート"数学"を参照し、リストの"A"を選択した場合は、ブックBのシート"美術"を参照するようにしたいです。 よろしくお願いします。 また、マクロを使わずして出来るようでしたら、その方法も合わせて教えて下さい。

  • セルの値が●ならば▲のマクロを自動で実行

    エクセルで、セルの値が●ならば▲のマクロを自動で実行するということはできるのでしょうか? セルの値が●月(TODAY関数)なら、自動的に置換をするように設定したいのです。

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

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

  • 【エクセル】マクロの自動実行

    エクセル2003を使用しています。 例)セルH4に名前が入力された時に、 今まで「Ctrl + Q」で起動していたマクロを自動実行 出来るようにしたいのです。 上記のような動きをしてくれ関数ないしマクロを知っている方が 居ましたら教えてもらえないでしょうか?

専門家に質問してみよう