[[20051107161606]] 『テキストボックスの背景の色』(おじさん1年生) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『テキストボックスの背景の色』(おじさん1年生)

  入力したデータを関数を通してエラーの有無を確認し、エラーのある箇所だけを
 赤く染め、エラーがなくなればもとの状態(白?)に戻すようにしたいと考えて
 います。
  そこで、テキストボックスの背景の色を一括して変更することって、可能ですか?

[エクセルのバージョン]Excel2003, [OSのバージョン]WindowsXP


 Excelには3種類のテキストボックスがありますが、
 何のテキストボックスでしょうか?
  (INA)


 こちらに統合しました。
 (kazu)2005/11/09 04:14


『テキストボックスの背景の色 その2』(おじさん1年生)

 ユーザーフォームのテキストボックスの背景の色を通常の白から、入力内容の相互間でエラーがあった場合に、赤にしたり、そのエラーが解消された場合に通常の白に戻したりする場合、1つ1つ、テキストボックス毎にマクロを書かなければなりませんか?
教えてください。


20051107161606
 なぜ放置?

 (INA)


お世話になります。INAさん。
 なぜ、放置?と言われると困るのですが…。
仕事の関係で、規則的にPCをネットに接続できずにいます。
新しく立ち上げた方が、見てもらえるのかな?と思って立ち上げてしまいました。
 よろしくお願いします。

(おじさん1年生)


 If TextBox1 = エラー Then
    TextBox1.BackColor = &HFF&     '赤
 Else
    TextBox1.BackColor = &HFFFFFF  '白
 End If

 でしょうか。RGB使っても出来ます。

 (ken)


 >新しく立ち上げた方が、見てもらえるのかな?
 その分、他の方の質問が後ろに追いやられてしまいますので
 そのようなことはしないのがマナーです。(これはどこの掲示板でも同じ)

 こちらの掲示板では、ほとんどの質問に返事がもらえます。
 もし貰えないとすれば、説明不足のときくらいです。 
  (INA)


ken様、ありがとうございます。
  回答をいただいていながら、なかなか試すことができずに今日まで来てしまいました。
  現在作っているユーザーフォームには、テキストボックスが全部で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.