| 
    
     |  | >ユーザーフォーム上にある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のままにして有ります
 
 
 |  |