帳票の狭い領域の中で、テキストボックスを2行にした際のユーザーのフィールドタイトル認識に悩んでいます。
どこかで見たことがあるのですが、入力前にテキストボックスにタイトル(名前のフィールドであれば「名前」など)をうっすら表示させ、1文字でも入力したら消える仕組みを作ることはできますでしょうか。
通報 ...
帳票の狭い領域の中で、テキストボックスを2行にした際のユーザーのフィールドタイトル認識に悩んでいます。
どこかで見たことがあるのですが、入力前にテキストボックスにタイトル(名前のフィールドであれば「名前」など)をうっすら表示させ、1文字でも入力したら消える仕組みを作ることはできますでしょうか。
1文字でも入力したらというのは難しいですが、薄く表示させておいてフォーカスが来たら消えるという仕様なら下記の方法で可能です。
「名前」テキストボックスの上に重なるようにテキストボックスを配置して下記のように設定します。
=IIf([名前]<>"","","名前")
フォーカス取得時のイベントプロシージャを下記のように記述します。
以上です。
フォーカスのあるテキストボックスは背景スタイルの「透明」が無効になるので「名前」テキストボックスを最前面へ移動して背景スタイルを「透明」にしてあげればVBAはいらないかなと
1文字でも入力したら~を実現しようと思ったらEnterでNullなら幅0、文字入力orExitで幅を戻すとかする感じですかねぇ。労力に見合った感じはしないですね
なるほど、それがシンプルでいいですね。
単票フォームならいいですが、帳票フォームだとカレント行以外にも影響を与えるので、それを考慮すると難しい。条件付き書式で文字色を白(背景色と同じ)にすることになるかな。下記の応用で。
カレント行の背景色の変更 - hatena chips
ありがとうございました。早速今日、実装予定です。
ところでこういったコントロールソースやクエリデザインで使う式なども
汎用関数を作って対応することはできますでしょうか?
もし使えるという場合、逆に使えない場所があれば教えてください。
ちなみに下記のような形ではうまく行きませんでした
初心者で恐れ入ります。
汎用関数は、
テキストボックスのコントロールソースに、下記のように設定することになります。
=Titleph([名前],"名前")
早速ありがとうございました。
上記VBAをコピーして、コントロールソースは「名前」の部分だけ変えて実装してみましたが
「#Name?」と表示されます。
色々試してみたこととしては、「Mtxtboxをtxtboxに変える」(宣言での変数と文中での変数が異なっていていいのかわからず??)「標準モジュールにおいたり、該当のフォームのモジュールにおいたり」です。
ちなみに、コントロールソースは自動で下記のように[]がついておりました。
==Titlepath
何か勘違いしておりますでしょうか?
失礼しました。コントロールソースの自動変換後は下記になります。
コントロールソースが間違って「Titlepath」になっていたことに気づきました…「Titleph」に変更したところ、エラーが「#Type!」になりました。度々すみません。
Titlepath は Titleph に修正済みとして、その前の全角の
=
を半角の=
に変更してください。(前の私の回答も全角になってましたので修正しておきました。)
=Titleph([名前],"名前")
タイプミスでした。txtboxが正しいです。回答も修正ておきます。
テキストボックスのコントロールソースの設定は下記です。
[名前]の[]内はテキストボックスの名前、"名前"の部分はうっすらと表示させたいテキストです。
うまくいきました。(ちなみにもう1か所Mtxtboxのままになっている部分があるようです)
大変勉強になりました。応用して、他でも色々作れそうです。ありがとうございました。
あっ(汗)、修正しておきました。