Excelでマクロでセンセーショナルな選択式入力を実現する方法

このQ&Aのポイント
  • 会社で、毎月リストを作成するのに誰かExcelに詳しい人が作ったファイルをフォーマットとしてずっと使っているのですが、同じようなファイルを新規で作って欲しいと先輩から頼まれました。
  • 先輩から、ドロップダウンがだらだら長くなるのがイヤなので、今使っているファイルのような感じの選択式にして欲しいと言われました。
  • ど素人がとんでもない質問をしている自覚はありますが、先輩命令では逆らえず、とっても困ってます。
回答を見る
  • ベストアンサー

Excelでマクロで入力項目を選択式にする方法

会社で、毎月リストを作成するのに誰かExcelに詳しい人が作ったファイルをフォーマットとしてずっと使っているのですが、同じようなファイルを新規で作って欲しいと先輩から頼まれました。 (はっきり言って、かなりムチャ振りです) そのファイルというのは、 (1)リスト入力というシート  と他に (2)品番マスター (3)店名マスターなどといったシートがあり (1)リスト入力というシートに毎月品番などの注文リストを入力するのですが、 (1)リスト入力シートのA列ー品番のセルをダブルクリックすると(2)品番マスターシートにとび、 そのシートの中から品番を選ぶと(1)リスト入力のA列に入力されるというものです。 入力を選択式にするなら入力規則などの方法があると思いますが、先輩から、ドロップダウンがだらだら長くなるのがイヤなので、今使っているファイルのような感じの選択式にして欲しいと言われました。 そこで、Excelの本を調べたり、その使っているファイルをいろいろ調べてみたのですが、私はExcelはそこそこ使える程度でしかないので、これってマクロ使ってるのかなぁ?ぐらいしかわからないのです。 ファイルを見た感じとしては、どこを探しても記録されたマクロは見当たらず、ひょっとしたらあまりいろいろいじられないように、マクロを非表示にしてあるようなのかしらと思うのですが、そもそもこういう選択式にしてあるファイルを他で見たことがないので、マクロを使っているかどうかも実はよく判っていません。 ど素人がとんでもない質問をしている自覚はありますが、先輩命令では逆らえず、とっても困ってます。 自分でも本などを調べて勉強いたしますので、どなたかお判りの方、やり方だけでも教えていただけたら大変助かります。 よろしくお願いします。

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

  • ベストアンサー
  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.2

シートは、リスト 店名 品名 の三シートが有るものとします。 標準モジュール Option Explicit Public myRange As Range リストシート シートモジュール Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Set myRange = Target Select Case Target.Column Case Is = 1 'A列 Sheets("品名").Activate Case Is = 3 'C列 Sheets("店名").Activate Case Is = 5 'E列 Case Else Set myRange = Nothing End Select End Sub 品名シート シートモジュール Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If myRange Is Nothing Then Exit Sub If Target.Value = "" Then Exit Sub Cancel = True myRange.Value = Target.Value Sheets("リスト").Activate Set myRange = Nothing End Sub 店名シート シートモジュール Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If myRange Is Nothing Then Exit Sub If Target.Value = "" Then Exit Sub Cancel = True myRange.Value = Target.Value Sheets("リスト").Activate Set myRange = Nothing End Sub

yochan_m
質問者

お礼

詳しく教えていただいて、ありがとうございます。 こんなに詳しく教えていただいて、大変お手数をおかけしてしまったと申し訳ないですが、やりたかったことができそうな気がしてきました。 早速試してみます。

その他の回答 (1)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

>ファイルを見た感じとしては、どこを探しても記録されたマクロは見当たらず、ひょっとしたらあまりいろいろいじられないように、マクロを非表示にしてあるようなのかしらと思うのですが、そもそもこういう選択式にしてあるファイルを他で見たことがないので、マクロを使っているかどうかも実はよく判っていません。 ご質問内容はダブルクリックで作動するイベントマクロで対応しているように見えます(「マクロ」からは表示されません)。 そのシートのシート名を右クリックして「コードの表示」をしてみてください。 >ど素人がとんでもない質問をしている自覚はありますが、先輩命令では逆らえず、とっても困ってます。 先輩が希望するようなブックを作成するには、少なくともVBAの基本部分が理解できていないと作成できないと思うので、もし期限がある仕事なら正直に現状を話されて、時間の余裕もらうように対応をされたほうが良いと思います。 また、サンプルコードを提示してほしいなら、ご質問の際に具体的なシートのレイアウトを提示して、わからない部分をポイントを絞って質問されたほうが良いと思います。

yochan_m
質問者

お礼

具体的な対応方法をありがとうございます。 どういう機能で作ってあるかもよくわかっていなかったので、とても助かりました。 早速コードの表示を試してみます。

関連するQ&A

  • エクセルでマクロを作りたいのですが上手くいきません

    エクセルで会社で使うファイルを作成していますが、ファイルサイズが大きくなりすぎたので、こういうマクロが作れないかと調べていたのですが、やり方がわからないので困っています。 わからないのは、入力シートのA列にデータを入力して、シート2のB列に自動的に表示する ことを自動的にやってくれるマクロです。 今はIF関数をシート2に入力している状態ですが、セルに関数を入れる方法だとファイルサイズが大きくなりすぎてしまいます。 (IF関数をあらかじめ入力しておくセル数がとてもたくさんある為) なお、入力シートA列がブランクの場合は、シート2のB列には何も表示されないようにしたいです。 大変困っております。よろしくお願いします。 

  • エクセルマクロについて教えてください。

    製品リストというシートと、発注リストという2つのシートがあります。 製品リストのシートには、A列に製品名、B列に在庫が入力されています。 発注リストのシートには、A列に製品名、B列に値段、C列には発注状況が入力されます。(C列は発注完了と発注取消の2項目のリスト選択となっています) 発注リストのシートのC列に発注取消と入力された場合に、発注取消と入力された行にある製品名をを、製品リストシートのA列内を探し、同じ製品名の入力されたセルに色を付けたいです。 例えば 発注リストシートのA5に ココナッツミルク B5に 100円と入力されており、C5に 発注取消 と入力した場合に 製品リストシートのA列にある ココナッツミルク と書かれたセルを赤色にしたいのですが、 どのようなマクロにすれば良いのでしょうか? どなたが教えていただけると助かります。

  • エクセルのマクロでセル選択するには

    初心者です! エクセルのSheet1に30箇所のセルをマクロで選択したいのですが、 たまに選択するセルが変わります。 そこで、Sheet2のA1から下へSheet1の選択する位置を「B2」「C5」「D10」・・・としてマクロで一発で30箇所のセルを選択する方法を教えてください Sheet2のA1から下へ入力するセル位置はその都度変化します。 変化したときにそのマクロを実行すると選択できるといいのですが!! よろしくお願いします。

  • エクセルの入力方法 関数を利用したいのですが、式がわかりません

    エクセルの入力方法 関数を利用したいのですが、式がわかりません!!  具体的に申し上げるとシート1で例えば セルのA1に”A”と入力したら、隣のシート2の中のB2からY2まで(横に連続している数値)を選択して、シート1のA2から横にシート2と同じように入力される   というようにしたいのですが、関数で作れますでしょうか??エクセル初級者なもので、関数の本を見ていても、わからなかったので質問します。 よろしくお願いいたします。

  • エクセルのマクロ

    あるエクセルのファイルにLIST(A列に呼びだすエクセルファイル名、B列からD列に呼びだしたエクセルに貼り付ける文字列があり、それが100行程度ある)があり、そのLIST A列に書かれているエクセルファイルを開き、その開いたエクセルファイルのある特定のセルにB列からD列にあるセルをそれぞれに貼りつける作業を繰り返すようなマクロはできないでしょうか? [流れ] LISTに書いてあるエクセルファイルを呼び出す→文字列を貼りつける→保存(できれば名前を変えて保存(その場合は、LISTのE列に名称を記載)→閉じる→次のLISTのエクセルファイルを開く→それをLISTの最後の行まで終わるまで繰り返す。 よろしくお願いします。

  • エクセルで2段階でリストからの選択入力したい

    エクセル2013で添付のようにSheet1のB列に顧客名、D列からR列まで行方向にその顧客の製品名が入力された表(顧客リスト)から、Sheet2の入力表のE列でリストから社名を選択したら、その社名に対応する製品名をF列でリストから選択入力できるようにしたいのです。 最初はINDEX関数とMACH関数の組み合わせで何とかと思ったのですが、名前の定義を使えば社名を選択したら直接製品名が選択できるように出来ると思ったのですが顧客が増えてきたら、不要の顧客名を削除したり、上書きしたらリストが崩れることに気づきました。 (顧客リストは毎月入力時に上書きしないとリストが長くなる一方で、リストから選択するより直接入力する方が簡単になってしまいます) 上記の問題を解消して、顧客リストを上書き、削除しても正しく選択できるようにならないでしょうか? 最初の思惑と違ってずいぶんハードルの高い内容になってしまい、回答いただいても当方に使えるかどうかも自信がなくなっていますがよろしくお願いします。

  • エクセルで閉じるときのマクロ

    あるエクセルファイルがあり、 その一枚のシートにはオートフィルタ (A~Z列まで)を使用しています。 【質問1】 ファイルを保存して閉じる際、 オートフィルタで抽出したものを 「すべて」に戻す、 つまりなにも抽出されていない(=左端の行番号が黒字) に戻すマクロはどこにどのように書けばよいでしょうか? オートフィルタを戻すマクロは、 'オートフィルタのあるシートを選択 Sheets("買取リスト").Select 'T列のオートフィルタを「すべて」にする Selection.AutoFilter Field:=22 というところまでは理解できました。 【質問2】 上記のマクロを Sheets("顧客リスト") から、Sheets("商品リスト")へ移動した際、 ボタン等を使用せずに、 (ただ、下のタブをクリックするだけで) 実行させることは可能でしょうか? 可能であれば、どこにどのように記述すれば よいでしょうか??  よろしくお願いします。

  • エクセルのマクロで、できると思うのですが・・・。

    例えば、A1から下にリストを入力していき、A100まで入力したとします。 他のシートなどで作業後、シートを戻し、再度リストを入力しようとした時、すぐにA101のセルに入力したいのです。 つまり、A列のなかで、【現在一番上に位置している空白セル】をアクティブにするマクロが知りたいのです。 ただ、アクティブになるだけでは無く、それが画面上に現れて、すぐに入力できるようになっていないと困るのです。 どうでしょうか。

  • エクセルのマクロでどうすればいいか悩んでいます

    エクセルのマクロでどうすればいいか悩んでいます  毎月月初めに年間のデータシートから前月の競馬の成績をまとめて別のファイルに転記していこうと思っています 問題は1月分のデータをどうやって判断ささせるかで いま考えてるのは 月初めと月終わりに印の代わりとなる物例えば◯とかを入力しておいて その範囲だけ転記しようと思っているのですが a~j;列までデータがあるので range(a10000) Selection.End(xlUp).Select でデータの最終行を求めるところまではできてますが そこからk列を選択する構文はどう書けばいいかわからなくて困っています わかりにくくすいませんがお願いします

  • マクロの記録に入力規則設定セルの選択が記録されない

    "AAA"と"BBB"と言うExcelファイルがあり、"AAA"はsheet1のA2セルを入力規則で(1)~(4)まで選択できるようにしています(リスト"(1)~(4)"はA1~D1セルに入力)。この選択を行うことで、同シートにあるグラフが(1)~(4)のデータを切り替え表示するようにしています。又"BBB"のファイルにも、sheet1のA2セルを入力規則で、ア~オ(リスト"ア~オ"はAA1~AA5セル)まで選択できるようにしており、この選択切り替えで同シートにあるグラフがア~オのデータを表示するようにしています。 通常は、この9種のデータグラフを、入力規則を設定したセルの値を切り替えることで、状況確認を行っています。只、会議用の資料としては、毎回グラフを切り替え、9種類のグラフをコピーし、別のファイル"会議用データ"に図形の貼り付けて作成している状況です。 この一連の作業をExcelのマクロの記録で行わせようと思い、"会議用データ"ファイルのsheet1にボタンを用意し、sheet2に9種のデータグラフを図形貼りけする操作を記録させました。ところが、"AAA"と"BBB"の入力規則を設定したセルで値を切り替える作業がマクロに記録されず、旨く動作しません。どのようにすれば旨く動作するかご教授願います。私はVBは全く解りませんので、『記録されたマクロの何処の部分に、この命令文を追加しなさい!』等、補足説明入りでご教授いただければ助かります。

専門家に質問してみよう