[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『テキストボックスの背景の色』(おじさん1年生)
入力したデータを関数を通してエラーの有無を確認し、エラーのある箇所だけを 赤く染め、エラーがなくなればもとの状態(白?)に戻すようにしたいと考えて います。 そこで、テキストボックスの背景の色を一括して変更することって、可能ですか?
[エクセルのバージョン]Excel2003, [OSのバージョン]WindowsXP
Excelには3種類のテキストボックスがありますが、 何のテキストボックスでしょうか? (INA)
こちらに統合しました。 (kazu)2005/11/09 04:14
ユーザーフォームのテキストボックスの背景の色を通常の白から、入力内容の相互間でエラーがあった場合に、赤にしたり、そのエラーが解消された場合に通常の白に戻したりする場合、1つ1つ、テキストボックス毎にマクロを書かなければなりませんか?
教えてください。
なぜ放置?
(INA)
なぜ、放置?と言われると困るのですが…。 仕事の関係で、規則的にPCをネットに接続できずにいます。 新しく立ち上げた方が、見てもらえるのかな?と思って立ち上げてしまいました。 よろしくお願いします。
(おじさん1年生)
If TextBox1 = エラー Then TextBox1.BackColor = &HFF& '赤 Else TextBox1.BackColor = &HFFFFFF '白 End If
でしょうか。RGB使っても出来ます。
(ken)
>新しく立ち上げた方が、見てもらえるのかな? その分、他の方の質問が後ろに追いやられてしまいますので そのようなことはしないのがマナーです。(これはどこの掲示板でも同じ)
こちらの掲示板では、ほとんどの質問に返事がもらえます。 もし貰えないとすれば、説明不足のときくらいです。 (INA)
回答をいただいていながら、なかなか試すことができずに今日まで来てしまいました。 現在作っているユーザーフォームには、テキストボックスが全部で96コあります。 そのうち、データ間の整合性をとらなければならないところが、12項目、テキスト ボックスの数でいうと延べ51コあります。 また、1コのテキストボックスで、複数項目の整合性をとらなければならないとこ ろもあります。 その場合、現在、12項目それぞれをシート上に関数を入れて、TRUE , FALSE を 表示させて FALSE の場合、入力されたデータの該当するテキストボックスを赤くし たいと考えています。 確認項目数が多いことで、関数の数が多くなり、ファイル自体も大きくなってきま した。 これを小さくまとめるにはやはり、マクロで何とかするしかないのかなと考え、 今回質問させていただきました。何か、よい知恵があれば、ご教授願いたいと思い ます。
INA様、今回のマナー違反、大変申し訳なく思っております。
今後、今回のようなことは、決していたしませんので、ご教授宜しくお願いいたし ます。
kazu様、お世話になりました。
(おじさん1年生)
すいません、ken もよく分かってませんが、 >データ間の整合性をとらなければならないところが、12項目、テキスト ボックスの数でいうと延べ51コ っていうのは、TextBox51個をエラーかどうかを判断するということでしょうか?
For i = 1 To 51 If UserForm1.Controls("TextBox" & i) = ・・・ Then コード End If Next i
で判定させるのでしょうか?外していたら申し訳ないです。差し支えなければ、 コードを御提示いただくとか。
(ken)
エラーチェックはすべてシート上で関数式を活用しています。 マクロでということも考えたのですが、方法が今ひとつよく分からなかったので、 関数を活用しています。 エラーが出ている箇所は False で返して、エラーが出ていない箇所は True で 返す。
If .Range("AI33") = False Then TextBox1.BackColor = &H80FFF TextBox2.BackColor = &H80FFF End If
という風に現在はなっています。このようなものが、12個あるのですが、もっと 簡略化できるのでしょうか?
(おじさん1年生)
たとえば、セルA1〜A12の入力状況をUserFormのTextBoxにて判定します。 未入力時、TextBoxが赤色になるという設定をします。 セルA1がTextBox1,2、A2がTextBox3,4、・・・、A12がTextBox23,24に対応しているとします。 このとき、これでどうでしょうか?
Sub test()
Dim i As Integer For i = 1 To 12 If Worksheets("Sheet1").Range("A" & i) = False Then UserForm1.Controls("TextBox" & i * 2 - 1).BackColor = &HFF& UserForm1.Controls("TextBox" & i * 2).BackColor = &HFF& Else UserForm1.Controls("TextBox" & i * 2 - 1).BackColor = &HFFFFFF UserForm1.Controls("TextBox" & i * 2).BackColor = &HFFFFFF End If Next i
UserForm1.Show
End Sub
外してる、っぽいですが。
(ken)
目からウロコ・・・って感じです。 早速試してみます。
(おじさん1年生)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.