LoginSignup
2
2

More than 5 years have passed since last update.

フォーム中の全テキストボックスに条件付き書式を一括設定

Last updated at Posted at 2013-03-18

フォームでフォーカスされているコントロールの書式を変更する

などで紹介されているように、フォーム中のテキストボックスには「フィールドにフォーカスがあれば背景色を変える」のような条件付き書式を設定できる。ちょうど 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>
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2