過去ログ

                                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
 ───────────────────────────────────────  ■題名 : Re:TextBox入力後、TextBoxの色変更  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/10/21(月) 15:34  -------------------------------------------------------------------------
   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
*********************************************************************:

もちっとスマートなやり方があるかしらん?(^^;
 ───────────────────────────────────────  ■題名 : Re:TextBox入力後、TextBoxの色変更  ■名前 : 123  ■日付 : 02/10/21(月) 15:56  -------------------------------------------------------------------------
   ▼つん さん:
こんにちは

早々にありがとうございました。

早速丸写ししてみましたが、
「変数が定義されていません」というメッセージが
出てしまいます。

メッセージが出るのは、フォームモジュールの
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
>*********************************************************************:
>
>もちっとスマートなやり方があるかしらん?(^^;
 ───────────────────────────────────────  ■題名 : Re:TextBox入力後、TextBoxの色変更  ■名前 : Jaka  ■日付 : 02/10/21(月) 16:07  -------------------------------------------------------------------------
   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
 ───────────────────────────────────────  ■題名 : すみません。ボケてました。  ■名前 : Jaka  ■日付 : 02/10/21(月) 17:20  -------------------------------------------------------------------------
   後で間違っているのに気が付きました。


    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  ■日付 : 02/10/21(月) 17:39  -------------------------------------------------------------------------
   やっぱり間違っていませんでした。

かなりあせってます。
 ───────────────────────────────────────  ■題名 : Re:すみません。ボケてました。  ■名前 : 123  ■日付 : 02/10/21(月) 17:43  -------------------------------------------------------------------------
   ▼Jaka さん:

あれっ
訂正前のコードでも良好に動きましたよ。

でも わざわざ ありがとうございました。
 ───────────────────────────────────────  ■題名 : ぽかしちゃったにゃ(>_<)  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/10/21(月) 16:18  -------------------------------------------------------------------------
   あ・・・ごめんなさい(>_<)
コピペするときに抜けてました。

フォームモジュールの先頭に
(Private Sub UserForm_Initialize()より前ね♪)

Private clsTextbox() As clsTest

入れてください。


Jakaさん、こんにちは〜♪
 ───────────────────────────────────────  ■題名 : Re:TextBox入力後、TextBoxの色変更  ■名前 : 123  ■日付 : 02/10/21(月) 17:17  -------------------------------------------------------------------------
   ▼つんさん Jakaさん
こんばんは。

御二方 ありがとうございました。
両方のやり方を試しました。両方とも良好でした。

大変たすかりました。


もうひとつすみません。
コマンドボタンをClickすると、●●と▲▲以外のTextBoxの値が
"×"になるようにしたいのです。
「色」の件が分かれば、応用してできると思っていたのですが、
やっぱり私の今の能力ではできませんでした。
再度 お助けくださいませ。
 ───────────────────────────────────────  ■題名 : Re:TextBox入力後、TextBoxの色変更  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/10/21(月) 17:38  -------------------------------------------------------------------------
   >コマンドボタンを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
 ───────────────────────────────────────  ■題名 : Re:TextBox入力後、TextBoxの色変更  ■名前 : 123  ■日付 : 02/10/21(月) 17:51  -------------------------------------------------------------------------
   ▼つん さん:

ありがとうございました。
ありがとうございました。
ありがとうございました。

かなり いい感じです。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 234