| 
    
     |  | ▼Hirofumi さん: >>ユーザーフォーム上にあるTextboxに文字等を入力させる場合、
 >>その文字が大文字全角や小文字半角とかいろいろあると、検索等で
 >>問題が生じるため、入力文字はすべて半角大文字に設定しています。
 >>下記はテキストボックスに入力した際に文字をそれに変換します。
 >>
 >>Private Sub TextBox1_Change()
 >> TextBox1.Value = Trim(StrConv(TextBox1.Value, vbNarrow + vbUpperCase))
 >>End Sub
 >>
 >>テキストボックスが5ヶ程度ならいいのですが、今回は70個程度の
 >>テキストボックスがあります。上記のプログラムをTextbox1からTextbox70まで
 >>書くのは最後の手段と考えています。
 >> もっと簡単にまとめる方法を教えて頂きたいと思います。
 >
 >こんな事すれば初期目的は、達せらてますが?
 >Changeイベントだけしか選べないのが疑問です?
 >
 >UserFormnoコードモジュールに記述
 >
 >Option Explicit
 >
 >'Groupの値取得クラスの配列
 >Private clsGroup() As Class1
 >
 >Private Sub UserForm_Initialize()
 >
 >  Dim i As Long
 >  Dim j As Long
 >
 >  'ClassにTextBoxを設定
 >  For i = 0 To Controls.Count - 1
 >    If TypeName(Controls(i)) = "TextBox" Then
 >      j = j + 1
 >      ReDim Preserve clsGroup(1 To j)
 >      Set clsGroup(j) = New Class1
 >      clsGroup(j).Box = Controls(i)
 >    End If
 >  Next i
 >
 >End Sub
 >
 >Private Sub UserForm_Terminate()
 >
 >  Dim i As Long
 >
 >  'Classを破棄
 >  For i = 1 To UBound(clsGroup)
 >    Set clsGroup(i) = Nothing
 >  Next i
 >
 >End Sub
 >
 >Classモジュールを追加して記述
 >
 >Option Explicit
 >
 >Private WithEvents txtBox As MSForms.TextBox
 >
 >Public Property Let Box(ByVal txtNewValue As MSForms.TextBox)
 >
 >  Set txtBox = txtNewValue
 >
 >End Property
 >
 >Private Sub Class_Terminate()
 >
 >  Set txtBox = Nothing
 >
 >End Sub
 >
 >Private Sub txtBox_Change()
 >
 >  With txtBox
 >    If .Value <> "" Then
 >      .Value = Trim(StrConv(.Value, vbNarrow + vbUpperCase))
 >    End If
 >  End With
 >
 >End Sub
 >
 >尚、Classの名前は、ディフォルトのClass1のままにして有ります
 ご指導の通り書き込みました。うまくいきました。
 ありがとうございました。
 >Changeイベントだけしか選べないのが疑問です?
 Exitイベントも使っていますが、まだうまく理解できないのでChangeを利用しています。
 
 |  |