• ベストアンサー

エクセルのVBAで質問です。

こんにちは。 リストで選んだ商品名に該当する注意書きを別のシートに用意してあります。その範囲を名前を付けて定義しています。 例えばマクロを実行する「入力」シートのA1で「商品ABC」という商品名を 選んだ場合、「注意書き」シートに定義している名前「商品ABC」を探して、「書出し」シートのA13のセルに該当する商品の注意書きをコピーするというようにしたいのですが、名前の定義しているのをどのように探してそれをコピーするのかやり方がわかりません。 教えていただけないでしょうか。宜しくお願いします。

  • wait4u
  • お礼率45% (619/1365)

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

VBAの御質問でしたね。先の回答でも、A1でリストからの名前選択は可能ですし、コメントの元の範囲を結合セルにしてしまえば機能すると思いますが、VBAでの実現例を次に記します。Sheet1のシートモジュールに記載してください。 Private Sub Worksheet_Change(ByVal Target As Range) '商品名=範囲名のリスト選択がA1にあるとき If Target.Address = "$A$1" Then Sheets("Sheet2").Range(Target.Value).Copy Sheets("Sheet1").Range("A2").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False End If End Sub なお、自動記録結果を手直ししたためコピー&ペーストしていますが、単純に参照先セルの値を代入する事も当然可能です。

wait4u
質問者

お礼

mitarashiさんありがとうございました。ばっちりできました。 イベントっていうものですか?これ便利なものですね。お手本にします。今後とも宜しくお願いします。

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

.....A ..... 1... 名前1..← ここに名前を入れる 2... =INDIRECT(A1)..← 該当する名前の内容が表示される こういう事でしょうか?

wait4u
質問者

補足

こんにちは。説明不足で申し訳ありません。 まず「入力」シートのA1で入力規則のリストより、商品名を選択できるようにしています。 あと名前の定義は、、「注意書き」シートに 商品別の注意書きをしている範囲を選択して、左上の名前ボックスに「商品ABC」などと、「入力」シートのA1でリストになっている名前と同じにしています。

関連するQ&A

  • Excel VBA シートへのリンク

    セルA1表示されている名前と同じシート名(別シート)へリンクするマクロを 作成したいです。 A1セルには関数が入力されていて 他のセルで条件を選択すると該当するシート名と同じ名前が表示されるようになっています。 よろしくお願いします。

  • EXCEL  VBA シートコピー、名前変更他

    EXCEL  VBA (1)シートコピー、名前変更 (2)他の固定のbookへ転送をVBAで記述 book1のsheet1を開き、そのsheetをコピーしたものをABCというsheet名に替え、 それをbook2のsheetの後ろへ移動するというマクロをPersonalに作ろうとしていますが、 インデックスエラーとか【アプリケーション定義または、オブジェクト定義のエラー】とかインデックスエラーとか になります。 book1のsheet1とかは、マクロを使う場合は、固定的な名前でなくいろいろそのときどきでかわる名前ですが、 マクロを使って、そのsheetをコピーしたものをABCとしてbook2のsheetの後ろへ移動したいということです。 よろしくお願いします。

  • エクセルVBA初心者です。マクロを組んでください。

    エクセルVBA初心者です。組んで欲しいマクロがあります。 Sheet 1に13桁を入力するセル sheet 2に検索したいデータ 手順としては、 Sheet 1のセルにデータを入力 →13桁以上でマクロが開始(されるように設定します) →Sheet 1のセルと同じ数列をSheet 2の列Aから検索 →該当のセルを含む行をSheet 3にコピー →Sheet 1の入力セルの少し下にもコピー (確認用) というのを一回一回ずつやりたいです。 できれば作業中マウスやキーボードを触りたくないので、そのために、マクロの終わわりには入力セル内の消去、マクロの始まりには確認用でコピーした行の削除もつけて下さい。 検索するSheet 2には同じデータが含まれているので、出来ればひとつずつSheet 3にコピーしたいので組み込んで頂けると幸いです。 よろしくお願いいたします。

  • エクセル2007で条件によってプルダウンリストを

    エクセル2007でリストを3項目って可能ですか? リスト用シートとして 得意先 あ い う 3社を"得意先"と名前定義付け 得意先「あ」の商品 a b c "あ商品名"と名前定義付け 得意先「い」の商品 f g h "い商品名" 同上 得意先「う」の商品 アイウ "う商品名" 同上 商品名「a」の数量 50 商品名「b」の数量 1000 商品名「c」の数量 10 ・・・ と数量が決まっている。-----ここまでリスト用シートに作成 で、 データ用シート(別シート)として、A列を得意先「あいう」から選択し、「あ」を選択したらB列は「abc」のプルダウンから選択し、「a」を選択したらC列には50が自動で入るということがしたいのです。 またこの場合、リスト用シートの入力方はどんな形でもよいのでしょうか?数式も含めてお助け下さい。

  • VBA初心者です。。。

    本日はじめてVBを触り、至急以下を事を実現させたいので、 どなたかご教授お願い致します。 (基本プログラム自体初めてですが、変数の考え方などはわかります。) 【行いたいこと】 1.シートをコピー 2.コピーしたシートの名前を変更 3.コピーしたシートの特定のセルに値を入れる 備考:シート名、特定のセルに入れる値はリストから順番に抽出し、 30回この処理を繰り返す 【質問】 1.シートの名前をリストから抽出する方法  →固定値での名前変更は出来るのですが、Excelのセルから値のとり方が不明。。 また、リストから順番に取る方法も不明。。。 (Ex:シート1のA1:A29の値を順番にコピーしたシート名にしていく) 出来れば、例のコードをつけて頂けたら幸いです。。。 以上、どなたか宜しくお願いします!

  • VBA 結合行を削除したときに値を残したい

    以下の様な処理をVBAで行いたいのですが、セルの内容が消えてしまいます。どうすればよいか教えてください  A列に商品タイプがあり、B列に商品名が入力されている。  1つの商品タイプは複数の商品があるため、A列は数行単位で結合されている。  今、マクロで特定商品の行だけを別のシートにコピーしたい。    そこで、   シート全体をコピーし   コピーしたシート上で該当商品を含まない行を削除  するマクロを作成しました。  しかし、商品タイプの列が結合されているため、商品タイプの1行目を削除してしまうと  新しいシート上でA列が空欄になってしまいます。  該当行のみコピーすることも考えましたが、   商品を抜き出す表以外はそのままコピーする(この方が情報量は多い)ため、上記の方法   を考えました。    何か良い方法はないでしょうか。  よろしくお願い申し上げます 

  • エクセルVBA、同名の<定義した名前>がある場合

    エクセル2010です。 Book_AのシートをBook_Bのシートに貼り付けようと思います。 Book_AとBook_Bに同じ名前の<定義した名前>があった場合、手作業でもマクロでも、シートをコピーしてそのまま他BOOKの別シートに貼り付けようとすると、 「移動またはコピーする数式またはシートには、移動またはコピー先のワークシートに 既にある名前<定義した名前>が含まれています。この名前を使用しますか?」 と聞いてきます。 この名前をそのまま使用したいので手作業の時は、[はい] をクリックすればいいだけなのですが、マクロで自動的に貼り付けをしていると、ここで中断されてしまいます。 ここをマクロで自動的に[はい] をクリックしたことにするのはどのようにすればよろしいでしょうか?

  • 【長文です】Excel2000 名前の定義を計算式に利用していますが、急に参照できなくなりました。

    初めて質問させて頂きます。 仕事で使用しているExcelファイルの様子がおかしく、困っています。 該当ファイルは以下の内容です。 ・WinXP・Excel2000 ・商品コード、商品名など商品データベースとして作成 ・シートは全3枚  ⇒Sheet1は約3000件、Sheet2は約100件、Sheet3は約250件のデータがあります。(商品の使用用途により、シートを分けています) ・このブックを参照元として、同じ書式のExcelブックを作成します  その際、参照先ブックはIFとVlookupを使って商品コードを入力すると商品名他の情報が表示されるようにしています ・Sheet1のデータ部分に「List1」、Sheet2のデータ部分に「List2」と名前を定義し、参照先の計算式で名前を利用しています。 ・Sheet1とSheet2には、データを検索するためのマクロを付けています。どちらもFor…Nextを使って商品名で検索し、検索を解除するも のです。コードや価格等の検索はオートフィルタを利用します。 このファイルは、今日の午前中まで正常に利用できましたが、正午すぎに急に以下のような症状がでました。 ・参照先ファイルに商品コードを入力しても、全てのコードでエラーになる(エラー表示は"NAME?"もしくは"N/A")  ⇒参照元に該当データがあることを確認しています。 ・既存の参照先ファイル(商品名等が正常に入力してあるもの)を開き、データを更新すると、全件エラー表示になる(エラー内容は上記 と同じ) 現在、このような状況です。 ・参照元ファイル(該当ファイル)で名前の定義がされているセル範囲の確認をしました。 ⇒通常、名前ボックスで定義された名前を選択すると、定義されたセルまたはセル範囲が選択されると思いますが、まったく選択されません。 それどころか、定義した同じ名前で同じシート内の別のセルが定義されてしまいます。(名前ボックスに同じ名前が2つ並んだ状態です) いっそのこと名前の定義をしなおそうと思い、挿入⇒名前⇒定義で定義済みの名前2つを削除しようとしましたが、削除されません。(選択した名前のセル範囲は消えますが、名前は消えずにボックス内に表示されたままです。 ・挿入⇒名前⇒定義で再度、セル範囲を指定しなおしましたが、状況はかわりませんでした。 ⇒このサイトの過去ログ・ネット上の他サイト・マイクロソフトのサポートなどいろいろ検索してみましたが、こういうケースの対処法をみつけることができませんでした。念のためウィルスのオンラインチェックもしてみましたが、ウィルスは検索されませんでした。 ・参照元の計算式の内容から、名前を定義したセル範囲(Vlookupでセル範囲として利用)が正常に定義されていないため、エラーが表示されるのではと考えていますが、参照先の計算式を名前を使用しない式に変えようと思うと、過去数年分は見直さなくてはならないので、他の方法を探しています。 ・この症状がでる前(今日の午前中)に作業していた人は、名前の定義やマクロを修正するなど、通常業務以外のことは何もしていないとのことでした。 なぜ、突然こんなことになるのか検討がつきません ・現在定義している名前「List1」「List2」が今まで通りのセル範囲を定義できる方法(セル範囲の修正方法)をご存知の方、またこういうケースに遭遇したことある方、何か他にアイデアがある方など、回答どうぞよろしくお願いします。 長文で申し訳ありませんでした。 よろしくお願いします。

  • エクセル2000のマクロについて質問です

    マクロ初心者です。 現在「セルA1の値を、別シートのセルB10に貼り付ける」という非常にシンプルな内容(実際はこれを何度も繰り返すのですが)のマクロを記録により作っています。 今困っているのは、貼り付ける元のセル(現在のA1)の位置が、仕様変更によってたびたび変わるので、そうなると今の私のスキルでは、一々マクロの記録をやり直している状態です。 一々やり直さずにすむ、何かいい方法はあるでしょうか。 これは全く憶測で考えているのですが、例えば貼り付ける元のセルに名前をつけて、その名前のセルを選択する、のようなことができるとありがたいのですが。 (コピー元のセルが別の場所に移っても、常に該当のセルを選択してもらいたい) よろしくお願い致します。

  • エクセルVBAで定義したセルを使う時

    シート1のセルA1にTESTと定義して、標準モジュールでRange("TEST")と書いています。 同じプログラムを別のシートでも使おうと思ったのですが、 同じブックで別のセルに同じ名前を定義できないようです。 そこで、シート2のセルA1にはTESTAという名前を定義しました。 アクティブなシートがシート1の時は、Range("TEST") アクティブなシートがシート2の時は、Range("TESTA")としてプログラムを書いていますが、 シート名を変えられたら、使えなくなります。 何か良い方法は無いでしょうか?

専門家に質問してみよう