などで紹介されているように、フォーム中のテキストボックスには「フィールドにフォーカスがあれば背景色を変える」のような条件付き書式を設定できる。ちょうど jQuery の .focus イベントで実現できるような「クリックしたテキストボックスは背景色が変わる」のようなイメージ。
あるフォームにたくさん(*)テキストボックスがある場合、これらに一括でこの条件付き書式を設定したいことがある。通常は:
- GUI 上でテキストボックスをマウスクリックで(複数)選択
- 書式メニューから条件付き書式を選択して希望の条件を設定
となるのだけれど、(*)数が多いと面倒だし、設定後に色を変えたくなったりした場合はさらに面倒。
これを VBA で楽して設定する方法がこちら(acFieldHasFocus がポイント、バージョン 2000 以降なら有効と思います):
単票形式、非連結「フォーム1」のテキストボックスとコンボボックスに「フォーカスのあるフィールド」条件付き書式を設定
Sub Form_Load()
Dim ctl As Control
' フォーム1にある全コントロールが対象
For Each ctl In Me.[フォーム1].Controls
With ctl
' テキストボックスまたはコンボボックスの場合
If .ControlType = acTextBox Or .ControlType = acComboBox Then
' いったん条件付き書式を削除
ctl.FormatConditions.Delete
' 「フォーカスのあるフィールド」条件付き書式を設定
ctl.FormatConditions.Add (acFieldHasFocus)
With ctl.FormatConditions(0)
.BackColor = RGB(100, 100, 255) ' 青色
' 他に設定したい書式があればここに
End With
End If
End With
Next ctl
End Sub
参考
jQueryを使って入力フォームでフォーカス時に背景色を変えるスクリプトのサンプル
.focus {
background: #ccccff;
}
JavaScript
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$('input[type=text],textarea').focus(function(){
$(this).addClass('focus');
}).blur(function(){
$(this).removeClass('focus');
});
});
</script>