• ベストアンサー

エクセル 入力規則を使ったリストボックスの▼を常に表示したい

表題の通り、入力規則を使って、別シートからデータをリンクできるように名前の定義を利用してリスト選択できるようにしました。ですが、そのセルは特に目印がなく、リスト選択ボタンは、そのセルを選択しない限りは表示されませんよね?ですから、この▼のリストボタンだけを常に表示しておいて目印にしておきたいのですが、いろいろ過去ログみましたがわかりません。どのようにすればよいでしょうか?よろしくお願いいたします。ちなみにこれは印刷時にはこのボタンは見えないのが都合よく、パソコン上で編集の時のみ見えればそれでよいのですが。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

#3の補足に対して #3のSelection.ListFillRange = "F1:F4"の下に Selection.LinkedCell = "A" & i を入れてください。これで選択されたコンボの値がセルの値になります。 そして 下記を実行して、印刷してみてください。 Sub teat02() ActiveSheet.OLEObjects.Visible = False End Sub 画面からはコンボが消えました。 復活する仕組みにするには、シートにコマンドボタンを貼り付け 消す・表示するをコントロールしてください。少しのVBAの知識を 前提にしてます。 表示に戻すには。 Sub teat03() ActiveSheet.OLEObjects.Visible = True End Sub コンボ等を抹消するのは Sub teat04() ActiveSheet.OLEObjects.Delete End Sub

asacchi
質問者

補足

何度もお手数をおかけしております。 今会社で、家でしたように同じ事を試してみましたが、なぜか コンパイルエラーが出ます。内容は 「変数が定義されていません」  で、For i = 1 to 10 の、i が反転され、タイトルの test1・・が黄色になっています。 どうかえればいいのでしょうか? VBAに関してはまだよくわかっていないので、すみません。 でも、解決できればうれしいので・・・ とりあえず、業務で使うので コメントを使用して目印をつけました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.7

> 印刷時にオブジェクトを印刷する、をチェックはずしました。そうすると、選んだ文字列まで消えてしまいました・・・ オブジェクトを印刷しないわけですから当然選択した文字(オブジェクト内)も印刷されません。 対応策 コンボボックスを右クリックし、「コントロールの書式設定」、「コントロール」で、リンクするセルを他のシートのセルに指定します。 指定したセルに選択したリスト番号が表示されます。 この番号からINDEX関数等でリストの文字を印刷したいシートのコンボボックスを配置したあたりのセルに評させます。 これで、選択した文字列は印刷されます。

asacchi
質問者

お礼

ありがとうございました! 最初から順番に作ってみたらうまくいきました。 INDEX関数については、よくわからなかたのですが、 リスト番号の意味がわからずどうやって作ったらいいかと思いましたが、そのセルを参照するのだということで、行番号には行番号をいれずに該当セルを指定しました。すると可変状態になりますものね。 ということで、 もうひとかたの方法と、用途によって使い分けるとよいですね! 一度に二つの方法を教えていただけてうれしいです。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

画面上の方にOptionExplicit があれば、抹消してみてください。 (正式には、変数の定義Dimを入れて変数定義をする方向で解決すべきですが) なお私の回答は回答をあげる前に全てテスト済みです。

asacchi
質問者

お礼

今やってみたら、できました。test04 まで、全部できました! ありがとうございます! お時間をさいて頂き感謝します!

全文を見る
すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

No2です。 > コンボボックスをフォームから選ぶのは、マクロを利用したやりかたじゃないと、無理なのですよね?  いいえ、フォームのコンボボックスはマクロとは関係なく利用できます。

asacchi
質問者

補足

コンボボックスを出して、右クリックでコントロールの設定から、別シートのリストを導くことができました!そして、印刷時にオブジェクトを印刷する、をチェックはずしました。そうすると、選んだ文字列まで消えてしまいました・・・ フォームから選んだコンボボックスは、こういう性質なのですかね、 社外へのお知らせの文面に使うので、コンボボックスは見えないほうがよいのですが、できないものなのでしょうか・・・?

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

入力規則のリストの置き場所に、当たる部分を、たとえば Sheet1の F1:F4に 東京 大阪 京都 名古屋 と入れておきます。 ーーーーー 下記VBAをコピーし、標準モジュールに貼り付けて実行してみてください。ほぼ望みのものができるようです。 Sub test01() Dim sh As Worksheet Set sh = Worksheets("Sheet1") For i = 1 To 10 l = sh.Cells(i, "A").Left t = sh.Cells(i, "A").Top w = sh.Cells(i, "A").Width h = sh.Cells(i, "A").Height sh.OLEObjects.Add(ClassType:="Forms.ComboBox.1", _ Left:=l, Top:=t, Width:=w, Height:=h _ ).Select Selection.ListFillRange = "F1:F4" Next i End Sub ”A”とあるところはA列に表示することを決定している部分で ”C”とかに変えられます。 For i=1 to 10の1と10は第1行から第10行までを 決めている部分です。自由に変えられます。 ”Sheet1”の部分はシートを決める部分です。 Selection.ListFillRange = "F1:F4" はリストのあるセル範囲を指定している部分です。 (注)ツールーマクロ-VBE-でVBE場面が出ます。 そのメニューで挿入ー標準モジュールで標準モジュールの画面になります。

asacchi
質問者

補足

詳しい説明ありがとうございます。やってみたらできました。常に表示状態になっているので思い通りのものができたようなのですが、印刷プレビューでは、このとおりのものが見えていますね、これはどうしたらよいでしょう?印刷時にだけは見えなくするには?他の方法で、ツールボックス→フォーム→コンボボックスを選んでシートへ作った場合には、右クリックしてコントロールの書式設定→プロパティ→オブジェクトの印刷をしない のチェックをはずすという方法で 見えなくすることができるのに、このマクロでできたコンボボックスには右クリックできず、印刷プレビューでもそのまま見えてしまっているのはどうしてでしょうか・・・?すみません、理解できなくて。。。

全文を見る
すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

入力規則を使ったリストボックスではなく、メニューから「表示」、「ツールバー」、「フォーム」で、フォームのアイコンがいくつか表示されますので、その中から「コンボボックス」を選んで、シートに貼り付ければ常に表示されます。 印刷はしたくないのなら、コンボボックスを右クリックし、「コントロールの書式設定」、「プロパティ」で「オブジェクトを印刷する」のチェックを外せばいいです。

asacchi
質問者

補足

ご回答ありがとうございます。 コンボボックスの右クリックで印刷時に見えなくすることができるのはわかりました。ですが、コンボボックスは作れても、これは入力規則を使ってのリスト作成とは、また違ったやりかたなのですよね? コンボボックスをフォームから選ぶのは、マクロを利用したやりかたじゃないと、無理なのですよね? となると、NO3様のマクロも利用してコンボボックスでそのセルがどこにあるかをはっきりさせ、しかも印刷時にはコンボボックスは見えないようにする、というやりかたは、できないのでしょうか・・・?

全文を見る
すると、全ての回答が全文表示されます。
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

安直ですが、該当セルにコメント挿入したら如何でしょうか。

asacchi
質問者

お礼

それは簡単なやりかたで、いいですね! どうしても希望するやりかたができないとなったときは、 そのやりかたであきらめます。ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【エクセル】入力規則のプルダウン▼ボタンを常に表示させたい

    エクセル2003を利用しています。 記入フォームのために入力規則を使って、 リストによるプルダウン選択をセルに設定しました。 そのセルが選択されている時は、セルの右側に▼ボタンが表示され、 そのセルが、プルダウン選択であることが分かります。 しかし、選択されていないと消えてしまうため 記入フォームの際、ユーザーはそのセルに移動しないと 入力するデータが、自由に書き込めるのか、リスト選択なのかが分かりません。 プルダウンであることが分かるように表示したいと考えています。 現在は、仕方が無く 右隣のセルに注意書きとして”*リストから選択してください”などと書いています。 入力規則のプルダウン▼ボタンを常に表示させる方法がございましたら アドバイスお願いします。 同じようなケースの代替案などもお聞かせいただけると助かります。

  • エクセルの入力規則のリストが効かない

    エクセルの入力規則でリストを設定していますが シート内の他のセルをいじっていると 突然リストを選択できなくなる時があります。 [データ]→[入力規則]の「ドロップダウンリストから選択する」はチェックされたままです。 こうなると一度ファイルを閉じても直りません。 新規ブックに全文をコピーしたら直りました。 新規ブックにシートコピーだと駄目です。 これはバグなのでしょうか?

  • エクセルの入力規則にかわるもの

    いつも大変お世話になっております。 エクセルの入力規則をよく作成し使用していますが、表示か8個までで8個以上は▼などで選択していますが、できれば、例えば、20行ある場合20行表示させたり、50行ある時は20行くらいずつ表示をさせたいです。 自分なりに調べたら、フォームコントロールやコンボボックスなどがでてきました。ですがイマイチやり方がわかりません。 やりたいことは、シート2に入力規則のリスト用に品名など名前を付けて、シート1のセルA3に、入力規則→リスト→名前、など登録してあります。シート1のセルA3で選択するときに、シート2で【名前】と登録したものがでます、シート1のセルA3を選択した際に名前がすべて出したいです。ほかには、【品名 1】と【品名 2】もシート1の決まったセルに半分くらいずつ表示させ選択したら選択したものが表示されたいです。 説明が上手くなくすみません。 フォームコントロールなどでできるようでしたら、ご教授お願い致します。

  • 入力規則-リスト選択で,リストの頭の行から表示させたいのに。

    1シート目に入力規則-リスト選択したいセルがあり, 2シート目にあるデータから選択するため,名前-定義で「行」に名前をつけて,範囲設定した。 ↓ 入力規則設定では空白を無視にチェックしてみたのですが・・・ 1シート目でプルダウン?(▼)で選択しようとすると,窓には2シート目リストの入力のない行(空欄)がデフォルトとして表示されてしまいます。 ↓ リストの先頭行から表示されるようにするにはどうしたら良いでしょうか?そのような技がありましたら教えて下さい。 (「行」を範囲選択するのがマズイでしょうか?行が増えても1シート目の範囲を設定し直さなくて良いかな,と思って行を範囲設定してみました。) ちなみに,Offset関数(?)は全くわかりません。

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

    入力規則のリストですが、 例えば、sheet1で設定する時にsheet2のセルを選択することはできるのでしょうか。

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

    エクセルの入力規則機能について質問があります。 入力値の種類をリストに設定されていて、元の値には”=項目”と記載されています。 項目は別のシートのリストをさしているようで、セルをポップアップするとその別シートの セルの内容が選択できるようになっています。別のシートのリストの項目を削除すると セルをポップアップするとその項目だけ選択できなくなります。 このような機能(”=項目”の定義の仕方)について、どのように設定すればよいか教え て下さい。 よろしくお願いいたします。

  • エクセルの「入力規則」についてお尋ねします。

    エクセル2010です。 あるセルにデータの入力規則を設定します。 条件設定の入力値の種類を「リスト」にし、リストの値は、0,1,2,3と直接指定します。 これで設定したセルにはプルダウンで0,1,2,3を選択するか、直接0~3の数値の入力しかできなくなります。 ここまでは問題ないのですが、このセルにユーザー定義の書式、0"人"を設定して、1は1人と表示されるようにしました。そうすると、直接0~3の数値の入力ははじかれ、プルダウンで0,1,2,3を選択するしか入力ができなくなります。 リストに設定した値を正しく入力しているのに排除されるのはなぜでしょう? いろいろ試し、リストの値を、0,1,2,3と直接指定せず、セル範囲のリスト指定とし、そのセル範囲にもユーザー定義の書式、0"人"を設定しておけばクリアできました。 でも、たかだか数件のリストを指定するのにいちいちリストをワークシート上に作成し、そこにもユーザー定義の書式を設定しなければならないのは腑に落ちません。

  • Excelの入力規則のリストにカンマを表示したい

    Excelの「データの入力規則」でリストにカンマ(,)を表示したいです。 手順としてはメニューの「データ」-「入力規則」を選択し、 表示された画面で「設定」タブを選択し「入力値の種類」で「リスト」を 選択します。 その後、「元の値」でカンマ(,)が含まれたシートのセル範囲を選択すれば 表示されますが、直に値を「元の値」に指定する場合にカンマ(,)をエスケープする方法が分かりません。 お分かりの方は教えてください。

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

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

  • Excel、入力規則のリストについて

    現在、A1とA2のセル(仮)に入力規則を設定し、それぞれ名前定義した範囲をリストとして表示するようにしています。 ※ただしくは、A1とA2は連動しており、A1で選択された値によってA2に表示されるようになっています。 A1の値を切り替えると、A2のリスト項目は問題なく切り替わるのですが、 A2のリストから選択して値を選択してあげるまで、A2は以前の値が保持されたままになります。 A1の値を切り替えると同時に、A2にA2のリスト項目の一番先頭のものを表示させることは出来ませんでしょうか。 お願いします。

専門家に質問してみよう