• ベストアンサー

エクセルVBA データ→入力規制→リストの作り方・・・

いつも皆様には大変お世話になっております。 またまた、教えて頂きたい事がありますので宜しくお願い致します。 VBAでとあるセルに入力規制のリストを作りたいのですが、    A  B  C  D 1  あ        2  い 3  う 4 5 となっている状況でD1のセルにAの列のリストを作りたいのです。 但し、A4やA5に今後名前が増えていくのです。 その増えたときに、増えた分の名前もD1のセルにリストとして乗せたいのです。宜しくお願い致します。

  • nanny
  • お礼率55% (72/129)

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

シート名のタブを右クリックして「コードの表示」を選び、出てきたVBE画面にコピペします。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells(1, 1).Column > 1 Then Exit Sub With Range("D1").Validation   .Delete   .Add Type:=xlValidateList, _    Formula1:="=" & Range("A1", Range("A65536").End(xlUp)).Address End With End Sub

nanny
質問者

お礼

ありがとうございます。ばっちりうまく出来ました^^ いつもいつもありがとうございます。

その他の回答 (3)

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.4

papavukaさんのマクロですと、 リストを追加したたびに 入力規則のリストの設定 をしなおしされますので、 リストに空白ができません。 ですので、A1~A65536を前も ってリストに設定しておくよ りもいいですね。 よって、私の記述は無視して ください。

nanny
質問者

お礼

親切丁寧なご回答ありがとうございました。 今回はpapavukaさんのやり方を、実施させていただきました。 また、質問載せると思いますので、その節はまたよろしくお願い致します。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

#1です。 考え方としては、 始めからリストの範囲を A1~A65536にしておくことです。 そうしておけば、いくらA列のデータが 増えても関係ありません。 ↓の作業をマクロの自動記録して、 一部改造しました。 A1~A65536に "A"という名前を付ける D1~D65536の 入力規則の設定を 入力値の種類を""リスト" 元の値を"=A" として"OK"をクリック ※セル範囲に名前を付ける、 入力規則の設定をする、 は手動でもほとんど手間 ではありません。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

ほとんどマクロの自動記録そのままです。 Sub Macro1() Dim R As Range ActiveWorkbook.Names.Add Name:="A", RefersToR1C1:="=Sheet1!R1C1:R65536C1" Set R = Sheets("SHEET1").Range("D1:D65536") With R.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=A" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .IMEMode = xlIMEModeNoControl .ShowInput = True .ShowError = True End With End Sub

nanny
質問者

お礼

早速のお返事ありがとうございます。 今試してみましたが、これだとB4のセルに何か文字が入ると、 なぜか、D1のリストのところに空白部分が入ってしまいます。 Aの列のみを見てD1のリストというものは作れないのでしょうか? わがまま言いまして申し訳ありませんが、宜しくお願い致します;;

関連するQ&A

  • excel vba データリストからの抽出

    excel vbaで、以下のような事をしたいと思っています。 【sheet1】データ   A  B C D E  1 あ い う え お 2 か き く け こ 3 あ き く せ そ 4 さ  し す せ そ 5 あ し す け こ 【sheet2】検索 A1を検索条件セルにする ※検索キーはsheet1のA列に登場するテキストのみです。   A  B  C  D  E 1 あ い う え お 2   き く せ そ 3    し す け こ 4 5 ※A2、A3に"あ"と表示されてしまってもよいのですが、  出来れば表示なしが望ましいです。 sheet2のA1は、sheet3に、sheet1のA列に登場したテキストをデータとしてリストしておき、 「データの入力規則」でリストから選択できるようにしようと考えています。 説明が下手でうまく伝わらないかも知れませんが、うまいやり方があれば どうかご教示下さい。 宜しくお願い致します。

  • エクセルの入力規制について質問します。

      A      B      C      D 1 (AB列を結合したセルA’)(CD列を結合したセルC’) 2 3 セルA’とセルC’には、それぞれ数字を入れます。 セルC’に数字が入ってるときに、セルA’に数字を入れることができないようにするために、セルA’に「入力規制」をしようとしました。 やったこと セルA’1に、「入力規制」→「ユーザー定義」で、数式のところに「セルC’1>0」 結果 セルC’1に数字が入っていないときに、セルA’1に数字を入れても入力エラーが出る。 どうすれば、エラーが出ずに、思ったとおりの入力規制ができるのでしょうか?ご教授いただければ幸いです。

  • エクセルの入力規則 リスト

    お世話になります。 入力規則でリストで選択し、その選択した値によって動的に次の入力リストの中身の変更を行いたいのですが上手く記述できないのでお願いします。 具体的に言いますと シート2を値を管理するシートとし、シート1を用意し シート2に アルファベットリスト(中身:A,B,C,D) Aリスト(中身:あ,い,う,え,お) Bリスト(中身:か,き,く,け,こ) Cリスト(中身:さ,し,す,せ,そ) Dリスト(中身:た,ち,つ,て,と) と命名したセルを用意します。 シート1のA列でアルファベットリストを入力規則のリストで呼べるようにします。 ここまでは出来るのですが シート1のA列でCを選択した場合B列ではCリストの「さ、し、す、せ、そ」を選択できるようにしたいのです。 Aであれば「あいうえお」Bであれば「かきくけこ」と絞りたいのですが上手くできないのです。 質問の内容がわからない場合申し訳ありません、質問頂ければお答えしますので宜しくお願い致します。

  • エクセルの絞込みによるリスト入力

    エクセルについて教えてください。 (1) A列を入力規制で『部』というリスト1からの入力になっています。 リスト1内には『1部、2部、3部』と入っているとします。 例えばA列に『1部』という名前をリストから選び、TabにてB列に移動した時 A列が『1部』であったならリスト2を表示、 A列が『2部』であったならリスト3を表示するという方法は可能でしょうか? リスト2には企画1課、企画2課・・ リスト3には営業1課、営業2課・・と入っているとします。 さらに、B列が『企画1課』と表示され C列にTab移動した時C列には人名リストから表示される、 といった絞込みのリスト入力をしたいと考えております。 (2) さらに、今回のようにA,B,C列をリスト内からの入力にしているのですが A列にリストから入力し、B列にTab移動した時に自動でリストが表示する方法は 可能でしょうか? 初心者であるためVBAは使用したことが無いので関数レベルで可能であれば 助かります。 よろしくお願いいたします。

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

    エクセルで入力規制のリスト機能を使い、文字入力の手間を省きたいのですが、リストにない項目を入力したいときがあります。 入力規制なので、当たり前ですが、直接入力ができません。 なにかいい方法ないでしょうか。 できるかどうかわかりませんが、セルのB1に入力規制のリストを設定し、A1に「○」を入力した場合のみ、B2が入力規制になるとかいうのもありですが、もっと簡単にできないでしょうか。

  • Excel入力規制応用教えて下さい!

    A1のセルでプルダウンにてA,B,C,Dを選択します。 そのとき連動でB1のセルが変化するようにし、且つ自由入力できる方法をお教え頂きたいのですが可能でしょうか。 A1セルがAのときB1セルは1,同様にBのときは2,Cのときは3,Dのときは4 更にどの場合においてもB1セルに自由に数値を入力できるようにしたいのです。 つまりA1セルにAと入力するとB1セルが自動で1となりますが場合によっては1以外の数値(例えば5)を手入力したいということです。 IF関数を多少使うことがある程度の素人なもんですから出来ればVBAを使わずに済む方法があれば是非ご教授下さい。 よろしくお願い致します。m(_ _)m

  • ExcelのVBAにてキーになるものを入力してデータを振分けたい

    2つのシートがあり、sheet2に振分けるデータ(下表)を作成しておきます。   (列)  1   2   3  (行)   1     A   B   C  2     ○   △   ×  3     ア   イ    ウ (1)sheet1にコンボボックスにてAを入力する。A、B、Cは、それぞれ決められたセルにコピーされる。 (2)sheet1にコンボボックスにて○を入力する。○、△、×は、それぞれ決められたセルにコピーされる。 (1)と(2)のコピーされる場所は、同じ場所です。 というようなものをExcelのVBAにて作成したいのですが、VBAは、あまりよくわかりません。 宜しくお願い致します。

  • エクセルの入力規制?について教えてください!

    「データ」→「入力規制」で入力値の種類を「リスト」にしたのですが 元の値の中に重複したデーターが入っております。するとボックス内はそのまま表示されてしまうのですが、複数表示を1つにするにはどうしたらよいでしょうか。アイディアをください。 例  A    B    C   東京都 aグループ   神奈川 aグループ   東京都 bグループ   東京都 cグループ   神奈川 bグループ    ・    ・ このときのA列B列に各「入力規制」をかけたいのです よろしくおねがいします。

  • Excelの入力規則に2列のリスト

    添付画像のようなA列に都道府県コード、B列に都道府県名が入力されていて、D2セルに入力規則でプルダウンリストを使用したいです。 プルダウンリストにはAとB列を結合(添付はスペース区切りにしていますがなんでもいいです)させたものを表示し、選択後はB列の名称のみを反映させたいのですが、このような制御は可能でしょうか? できればマクロやVBAは使用しない方が望ましいです。 よろしくお願いします。

  • Excel VBA 入力規則のリスト化

    Excel VBAにて入力規則でリスト化しようと思っています。 通常セルを範囲指定によってリスト化する場合、 以下のようなコードになると思うのですが、 (セルA1にセルB1~B10の内容がリスト化される) Range("A1").Select With Selection.Validation .Add Type:=xlValidateList, Formula1:="=B1:B10" End With 例えばB1~B3, B6~B10などのような不連続な範囲をリスト化 する方法はありませんでしょうか? 宜しくご教示の程お願い致します。

専門家に質問してみよう