目次
強制的に入力できないようにする
こんにちは。伊川(@naonaoke)です。
今回は、入力不要なテキストボックスをグレイアウトさせる方法を紹介します。
問題提起
(株)IKAWAの阿久 世子男(アク セスオ)は、電話番号の桁数が違うと、登録できないというシステムを作成しました。しかし、システムを展開した部署から、不評の声がとまりません。不評の内容は下記の通りです。
・携帯電話の入力のテキストボックスと、固定回線の入力のテキストボックスの間隔が狭い。
・その結果、固定回線の入力のテキストボックスに、携帯電話の番号を入力してしまう。
なにか、改善する良い方法はないだろうか?
解決策
・Enabledプロパティで対象のテキストボックスをグレイアウトにする・Visibleプロパティで、対象のテキストボックスを消す
Enabledプロパティ
上の記事の続きになります。
上の記事では、Exit Sub を使って、IF構文の条件から抜ける方法を紹介しました。
今回は、チェックボックスに、チェックが入ると、入力可能になります。
反対に、チェックボックスにチェックが入らなければ、グレイアウトのままになります。
作成手順 その1 はじめからグレイアウトにするには?
上の図のように、プロパティシートを選択します。
フォームを選択します。
「読み込み時」⇒「イベントプロシージャ」を選択します。
Private Sub Form_Load() Me.[携帯電話番号].Enabled = False Me.[固定電話番号].Enabled = False End Sub
上記のコードを入力します。
Enabledプロパティは、Falseなら、グレイアウトのままで、Trueなら、入力できるようになります。
フォームを起動した場合は、はじめからグレイアウトに設定しています。
作成手順 その2 チェックボックスにチェックを入れたら、入力可能にする
上の図のように、プロパティシートを選択します。
携帯電話を選択します。
「クリック時」⇒「イベントプロシージャ」を選択します。
※チェックボックスの場合は、クリックはしませんが、チェックを入れることを、クリック時にします。
Private Sub 携帯入力_Click() If Me.[携帯入力] = True Then Me.[携帯電話番号].Enabled = True Else Me.[携帯電話番号].Enabled = False End If End Sub
上記のコードを入力します。
Private Sub 固定入力_Click() If Me.[固定入力] = True Then Me.[固定電話番号].Enabled = True Else Me.[固定電話番号].Enabled = False End If End Sub
固定回線の場合は、上記のコードを入力します。
Visibleプロパティ
作成手順は、まったく同じです。
Private Sub Form_Load() Me.[携帯電話番号]. Visible = False Me.[固定電話番号]. Visible = False End Sub
Private Sub 携帯入力_Click() If Me.[携帯入力] = True Then Me.[携帯電話番号]. Visible= True Else Me.[携帯電話番号]. Visible= False End If End Sub
Private Sub 固定入力_Click() If Me.[固定入力] = True Then Me.[固定電話番号]. Visible= True Else Me.[固定電話番号]. Visible= False End If End Sub
コード自体は、EnabledをVisibleに変更しただけです。
ここがポイント
条件式を間違うと、テキストボックスが表示されなかったり、グレイアウトのままだったりします。最初は、VBAを使うのが面白くて、凝ったものを作成しがちです。悪くはありませんが、シンプルなものが、メンテナンスも容易です。
まとめ
今回で、IF構文はマスターできましたか?条件判定は、VBAでは非常に重要です。しっかりとマスターしてください。また、どんなに良い成果物があっても、人の要望は果てしないものです。その要望に負けないように、スキルアップしてください。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。
今回のサンプルファイルは、No38です。