ここから本文です

エクセルマクロで、フォーム内のテキストボックス等の背景色を変える方法について...

razzle_hr1975さん

2011/12/2723:54:20

エクセルマクロで、フォーム内のテキストボックス等の背景色を変える方法についてご教授ください。

ユーザーフォーム内のテキストボックス、コンボボックス等にSheet1のA2セルの値がフォーム内のTxtBox1に、B2セルの値がコンボボックスにC2セルの値がTxtBox2に・・・というように表示させるようにしています。
このとき、Sheet1の指定のセルが空白だった場合に、フォーム内の背景色を赤にしたいと思っているのですが、
複数セルが空白だった場合に1度の処理(コード)で出来るようにするにはどのようにすればよいのでしょうか。
TxtBox等が複数あり、それに伴って、複数セルがあるのですが、1セルごとに処理を行うのが非常に長い処理になってしまうので、簡単に処理できるような方法があればご教授ください。

補足すみません。
入力補助ツールとしてフォームからシートに転記しているので、投入コマンドボタンを押したときです。
また、作成中のため、確認はまだしていないのですが、テキストボックスだけでなく、コンボボックスもあるのですが、ご教授いただいたコードはテキストボックスのみのような気がしますけどどうなのでしょうか。

閲覧数:
3,349
回答数:
1

違反報告

ベストアンサーに選ばれた回答

ja7awuさん

編集あり2011/12/2808:24:15

--- 補足に対して---
> 投入コマンドボタンを押したときです。
まぁ、それは応用範囲ですが、イベントの種類が違うだけです。

Private Sub CommandButton1_Click()
Dim Rng As Range
For Each Rng In Sheets("Sheet1").Range("A2:C2")
With Me.Controls("TextBox" & Rng.Column)
If IsEmpty(Rng) Then
.BackColor = &HFF
Else
.BackColor = &HFFFFFF
End If
End With
With Me.Controls("ComboBox" & Rng.Column)
If IsEmpty(Rng) Then
.BackColor = &HFF
Else
.BackColor = &HFFFFFF
End If
End With
Next
End Sub

> テキストボックスのみのような気がしますけどどうなのでしょうか。
そうです。 他も同じ様に出来ます。
同じセルでComboBoxにも同様に適用するならNextの前に
With Me.Controls("ComboBox" & Rng.Column)
' 中のコードは同じ
End With
を追加すればいいかと思います。 追加しました。
セルが違う場合でもコードの意味を解析して応用するように考えてみてください。

----------------

何時の時点でBackColorを設定するのか書いていませんので、
取敢えず、UserFormをShowした時点で設定するとすれば
こんな感じです。 あとは実情に合わせて いじってください。

Private Sub UserForm_Initialize()
Dim Rng As Range
For Each Rng In Sheets("Sheet1").Range("A2:C2")
If IsEmpty(Rng) Then
Me.Controls("TextBox" & Rng.Column).BackColor = &HFF
Else
Me.Controls("TextBox" & Rng.Column).BackColor = &HFFFFFF
End If
Next
End Sub

質問した人からのコメント

2011/12/31 04:55:15

ありがとうございます。
なぜか、うまくいきませんでしたが、試行錯誤して何とか解決しました。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

5文字以上入力してください

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。