プロが教えるわが家の防犯対策術!

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

A 回答 (7件)

#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

この回答への補足

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

とりあえず、業務で使うので コメントを使用して目印をつけました。

補足日時:2005/12/14 11:15
    • good
    • 0

> 印刷時にオブジェクトを印刷する、をチェックはずしました。

そうすると、選んだ文字列まで消えてしまいました・・・

オブジェクトを印刷しないわけですから当然選択した文字(オブジェクト内)も印刷されません。

対応策
コンボボックスを右クリックし、「コントロールの書式設定」、「コントロール」で、リンクするセルを他のシートのセルに指定します。
指定したセルに選択したリスト番号が表示されます。
この番号からINDEX関数等でリストの文字を印刷したいシートのコンボボックスを配置したあたりのセルに評させます。
これで、選択した文字列は印刷されます。
    • good
    • 1
この回答へのお礼

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

お礼日時:2005/12/15 15:06

画面上の方にOptionExplicit


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

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

お礼日時:2005/12/14 13:26

No2です。



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

いいえ、フォームのコンボボックスはマクロとは関係なく利用できます。

この回答への補足

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

補足日時:2005/12/14 11:21
    • good
    • 0

入力規則のリストの置き場所に、当たる部分を、たとえば


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場面が出ます。
そのメニューで挿入ー標準モジュールで標準モジュールの画面になります。

この回答への補足

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

補足日時:2005/12/13 22:03
    • good
    • 0

入力規則を使ったリストボックスではなく、メニューから「表示」、「ツールバー」、「フォーム」で、フォームのアイコンがいくつか表示されますので、その中から「コンボボックス」を選んで、シートに貼り付ければ常に表示されます。



印刷はしたくないのなら、コンボボックスを右クリックし、「コントロールの書式設定」、「プロパティ」で「オブジェクトを印刷する」のチェックを外せばいいです。

この回答への補足

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

補足日時:2005/12/13 22:21
    • good
    • 0

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

    • good
    • 1
この回答へのお礼

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

お礼日時:2005/12/13 22:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています