|
▼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を利用しています。
|
|