こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBA初心者です。

VBA初心者です。

ユーザーフォームにテキストボックスとコンボボックスを1つずつ作り、それらを

Private Sub ComboBox1_Change()
   TextBox1.Value = ComboBox1.Value
End Sub

というふうに繋いでるとき、テキストボックスにフォーカスをあてさせないようするため、

Private Sub UserForm_Initialize()
   TextBox1.Enabled = False
End Sub

このようにしました。ここまでは問題ありません。質問したいことは、このときテキストボックスに表示させる文字が淡色になるのを防ぐ方法です。

   TextBox1.Locked = True

これを上に付け加えればうまくいきそうなのですが、うまくいきませんでした…。どなたか解決方法を教えて下さい。

投稿日時 - 2010-02-20 01:23:12

QNo.5690885

暇なときに回答ください

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

こんにちは。

以下は一例です。

「フレーム」上に「テキストボックス」を配置し、フレームへのフォーカス移動を
禁止すれば、目的の設定が可能だと思います。

具体的には、以下のような設定及び、マクロの記述を行えば良いと思います。

1)ユーザーフォームに、「フレーム」を追加する。

2)「フレーム」上に、「テキストボックス」を配置する。
  ・テキストボックスのEnabledプロパティは、Trueにしておきます。

3)ユーザーフォームのInitializeイベントに以下の記述を追加する。
  '===================================
  'フレームの初期設定
  Frame1.Caption = ""   'キャプションをなしにする
  Frame1.BorderStyle = fmBorderStyleSingle '境界線を表示する
  Frame1.BorderColor = Frame1.BackColor   '境界線の色を背景色と同じにする
  Frame1.Enabled = False 'フォーカス移動を禁止する
  '===================================
 ※上記は、フレームのオブジェクト名が"Frame1"だった場合の記述例です。
 ※フレームの境界色を変更して、表示上フレームを見えないようにしています。

以上のような設定で、テキストボックスは通常表示のままで、フォーカス移動の
禁止が可能だと思います。

添付画像は、ユーザーフォームの画面例、及び、マクロの記述例です。

なお、上記の方法は下記サイトの内容を参考にさせて頂きました。

■参考サイト
ユーザーフォーム上のtextboxをenableにし、かつ淡色にしたくない
http://www.moug.net/faq/viewtopic.php?t=46752

以上です。

投稿日時 - 2010-02-20 07:27:46

お礼

希望通りになりました。こんな技があるとは…奥深いです。丁寧な説明をありがとうございました。m(__)m

投稿日時 - 2010-02-20 22:16:20

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

テキストボックスを編集不能にして、表示を淡色にしたくないなら
テキストボックスを、いっそ、ラベルにしては如何ですか

ラベルにすると、淡色には、ならないみたいですが。

テキストボックスでないといけないなら、ごめん

投稿日時 - 2010-02-20 13:05:19

お礼

ラベルだとならないのですね。機会があれば使ってみます。
また何かあったらよろしくお願いしますm(__)m

投稿日時 - 2010-02-20 22:18:40

ちょっと力技ですが...
テキストボックスの Enter イベントを使って別のコントロールに強制的にフォーカスを移すというのはどうでしょうか。

  Private Sub TextBox1_Enter()
   TextBox2.SetFocus
  End Sub

って感じで。
手元の環境 (Excel 2007) では、マウスクリックや Tab 移動でのフォーカスにきちんと反応してくれました。
ただし、VBA で SetFocus を使ってテキストボックスにフォーカスを移すと、実行時エラーが発生します。
あまり詳しく調べてないんですが、回避策あるのかなぁ

中途半端な情報ですみません...

投稿日時 - 2010-02-20 03:41:36

お礼

>中途半端な情報ですみません...

いえいえ、自分は全然初心者ですので、とりあえず今はいろんな知識がすべて自分の勉強になりますので、どんな回答でもありがたいです。またよろしくお願いしますm(__)m

投稿日時 - 2010-02-20 22:21:33

あなたにオススメの質問