Page 234 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼TextBox入力後、TextBoxの色変更 123 02/10/21(月) 13:13 ┗Re:TextBox入力後、TextBoxの色変更 つん 02/10/21(月) 15:34 ┗Re:TextBox入力後、TextBoxの色変更 123 02/10/21(月) 15:56 ┣Re:TextBox入力後、TextBoxの色変更 Jaka 02/10/21(月) 16:07 ┃ ┗すみません。ボケてました。 Jaka 02/10/21(月) 17:20 ┃ ┣(/><)/ ひぇ〜 Jaka 02/10/21(月) 17:39 ┃ ┗Re:すみません。ボケてました。 123 02/10/21(月) 17:43 ┣ぽかしちゃったにゃ(>_<) つん 02/10/21(月) 16:18 ┗Re:TextBox入力後、TextBoxの色変更 123 02/10/21(月) 17:17 ┗Re:TextBox入力後、TextBoxの色変更 つん 02/10/21(月) 17:38 ┗Re:TextBox入力後、TextBoxの色変更 123 02/10/21(月) 17:51 ─────────────────────────────────────── ■題名 : TextBox入力後、TextBoxの色変更 ■名前 : 123 ■日付 : 02/10/21(月) 13:13 -------------------------------------------------------------------------
教えてください。 皆さんのご協力を得て、 TextBoxを使って入力フォームを作っています。 今、困っているのが、 TextBoxに入力後、そのTextBoxの色を 変えようとしているのですが、そのTextBoxの数が 30コほどあります。 ひとつ毎に設定してもいいのですが、今後もこのような 同じことを全部のTextBoxに指定することがでてきそうなので、 お聞きしたいと思います。 以下のコードと同じ結果になるように、TextBox全部に指示する 時はどのようにしたらよういでしょうか。 また、数あるTextBoxの内、●●と▲▲だけは、その指示から 除きたい場合は、どのようにしたらよいでしょうか。 宜しくお願い致します。 Private Sub TextBoxあ_Change() With TextBoxあ If TextBoxあ.Value <> "" Then .BackColor = RGB(210, 244, 250) Else .BackColor = RGB(255, 255, 255) End If End With End Sub |
123 さん、こんにちは クラスモジュール使ってみましたが、こんなんどーですかー? **クラスモジュール****************************** Private WithEvents pr_txtTest As MSForms.TextBox Public Property Get myText() As MSForms.TextBox Set myText = pr_txtTest End Property Public Property Let myText(ByVal vNewValue As MSForms.TextBox) Set pr_txtTest = vNewValue End Property Private Sub pr_txtTest_Change() With pr_txtTest If .Value <> "" Then .BackColor = RGB(210, 244, 250) Else .BackColor = RGB(255, 255, 255) End If End With End Sub **フォームモジュール************************ Private Sub UserForm_Initialize() Dim i As Long Dim k As Long k = 0 For i = 0 To Me.Controls.Count - 1 If (TypeName(Me.Controls(i)) = "TextBox") Then If (Me.Controls(i).Name <> "●●") And _ (Me.Controls(i).Name <> "▲▲") Then ReDim Preserve clsTextbox(k) Set clsTextbox(k) = New clsTest clsTextbox(k).myText = Me.Controls(i) k = k + 1 End If End If Next i End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Dim i As Long For i = LBound(clsTextbox) To UBound(clsTextbox) Set clsTextbox(i) = Nothing Next i End Sub *********************************************************************: もちっとスマートなやり方があるかしらん?(^^; |
▼つん さん: こんにちは 早々にありがとうございました。 早速丸写ししてみましたが、 「変数が定義されていません」というメッセージが 出てしまいます。 メッセージが出るのは、フォームモジュールの Private Sub UserForm_Initialize()の ReDim Preserve clsTextbox(k) の部分です。 お助け下さい。(お手数をお掛けいたします) >クラスモジュール使ってみましたが、こんなんどーですかー? > >**クラスモジュール****************************** >Private WithEvents pr_txtTest As MSForms.TextBox > >Public Property Get myText() As MSForms.TextBox > Set myText = pr_txtTest >End Property > >Public Property Let myText(ByVal vNewValue As MSForms.TextBox) > Set pr_txtTest = vNewValue >End Property > >Private Sub pr_txtTest_Change() > > With pr_txtTest > If .Value <> "" Then > .BackColor = RGB(210, 244, 250) > Else > .BackColor = RGB(255, 255, 255) > End If > End With > >End Sub > >**フォームモジュール************************ >Private Sub UserForm_Initialize() > > Dim i As Long > Dim k As Long > > k = 0 > > For i = 0 To Me.Controls.Count - 1 > If (TypeName(Me.Controls(i)) = "TextBox") Then > If (Me.Controls(i).Name <> "●●") And _ > (Me.Controls(i).Name <> "▲▲") Then > > ReDim Preserve clsTextbox(k) > Set clsTextbox(k) = New clsTest > clsTextbox(k).myText = Me.Controls(i) > > k = k + 1 > End If > End If > > Next i > >End Sub > >Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) > > Dim i As Long > > For i = LBound(clsTextbox) To UBound(clsTextbox) > Set clsTextbox(i) = Nothing > Next i > >End Sub >*********************************************************************: > >もちっとスマートなやり方があるかしらん?(^^; |
123さん、つんさん こんにちは。 しこしこと初めてクラスを使って作っていたら、つんさんに先を越されてしまいました。 ichinoseさんに先を越されると思っていたんですけど。 作っちゃったんで載せてみます。 つんさんと変わんないようですけど クラスモジュールにコピペして下さい。 クラスモジュールの名前は、Class1とします。 Public WithEvents TexChgEvent As MSForms.TextBox Private Sub TexChgEvent_Change() With TexChgEvent If .Text <> "" Then .BackColor = RGB(210, 244, 250) Else .BackColor = RGB(255, 255, 255) End If End With End Sub Formモジュールにコピペして下さい。 Dim FMCls() As New Class1 Private Sub UserForm_Initialize() Dim FMCNT As Long FMCNT = 0 For Each Form_C In Me.Controls If TypeName(Form_C) = "TextBox" And Form_C.Name <> "●●" And _ Form_C.Name <> "▲▲" Then FMCNT = FMCNT + 1 ReDim Preserve FMCls(1 To FMCNT) Set FMCls(FMCNT).TexChgEvent = Me.Controls(Form_C.Name) End If Next End Sub |
後で間違っているのに気が付きました。 If TypeName(Form_C) = "TextBox" And Form_C.Name <> "●●" And _ Form_C.Name <> "▲▲" Then FMCNT = FMCNT + 1 ReDim Preserve FMCls(1 To FMCNT) Set FMCls(FMCNT).TexChgEvent = Me.Controls(Form_C.Name) End If ↓ If TypeName(Form_C) = "TextBox" Then If Form_C.Name <> "●●" And _ Form_C.Name <> "▲▲" Then FMCNT = FMCNT + 1 ReDim Preserve FMCls(1 To FMCNT) Set FMCls(FMCNT).TexChgEvent = Me.Controls(Form_C.Name) End If End If |
やっぱり間違っていませんでした。 かなりあせってます。 |
▼Jaka さん: あれっ 訂正前のコードでも良好に動きましたよ。 でも わざわざ ありがとうございました。 |
あ・・・ごめんなさい(>_<) コピペするときに抜けてました。 フォームモジュールの先頭に (Private Sub UserForm_Initialize()より前ね♪) Private clsTextbox() As clsTest 入れてください。 Jakaさん、こんにちは〜♪ |
▼つんさん Jakaさん こんばんは。 御二方 ありがとうございました。 両方のやり方を試しました。両方とも良好でした。 大変たすかりました。 もうひとつすみません。 コマンドボタンをClickすると、●●と▲▲以外のTextBoxの値が "×"になるようにしたいのです。 「色」の件が分かれば、応用してできると思っていたのですが、 やっぱり私の今の能力ではできませんでした。 再度 お助けくださいませ。 |
>コマンドボタンをClickすると、●●と▲▲以外のTextBoxの値が >"×"になるようにしたいのです。 >「色」の件が分かれば、応用してできると思っていたのですが、 >やっぱり私の今の能力ではできませんでした。 >再度 お助けくださいませ。 こんな感じかな? Private Sub CommandButton1_Click() Dim i As Long For i = 0 To Me.Controls.Count - 1 If (TypeName(Me.Controls(i)) = "TextBox") Then If (Me.Controls(i).Name <> "●●") And _ (Me.Controls(i).Name <> "▲▲") Then Me.Controls(i).Value = "×" End If End If Next i End Sub |
▼つん さん: ありがとうございました。 ありがとうございました。 ありがとうございました。 かなり いい感じです。 |