特定のセルの文字入力を半角英字の大文字にする方法
セルB13~BK13に文字を入力する際に、全角小文字の英字や数字、半角小文字の英字や数字、全角大文字の英字や数字で入力した場合でも、自動で半角大文字の英字と数字に自動変換して、英字と数字の間に半角で1角の空欄を自動でしてくれる様にするVBAなどの方法はありますか?
この際にどの様な形式の平仮名やカタカナや‐(ハイフン)が入力された場合は「平仮名やカタカナや‐は入力できません。」とエラーメッセージを表示させたいです。
※例えば「ggg 501(半角小文字の英字)」や「ggg 501(全角小文字の英字)」や「GGG 501(全角大文字の英字)」と入力した場合でも自動で「GGG 501(半角大文字の英字)」と自動変換され英字と数字の間に1角の半角で空白が自動で設定してくれる感じです。
※「じーじーじ 501(平仮名が含まれる)」や「ジージージー 501(カタカナが含まれる)」や「GGG-501(ハイフンが含まれる)」など入力させたらエラーメッセージを表示させます。
※ちなみにこのシートには
''*******************************************************************************
' セル選択によるイベント
'*******************************************************************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'カレンダーフォームのVBA
If Intersect(Target, Range("BP1")) Is Nothing Then Exit Sub
If MsgBox("日付を記入するためカレンダーを表示させます、よろしいでしょうか?", vbYesNo) = vbNo Then
Exit Sub
Else
End If
' カレンダーフォームを起動する
Call ShowCalendarFromRange2(Target)
Dim ans As String
ans = InputBox("指定した時間(〇〇:〇〇)を入力して下さい。")
If ans = "" Then Exit Sub
Range("CO14").Value = ans
ans = InputBox("先ほど指定した時刻からの時間間隔(例えば5分なら「5」で1時間なら「60」を入力して下さい。 ")
If ans = "" Then Exit Sub
For Each c In Range("CO15:CO37")
c.Value = Format(c.Offset(-1).Value + TimeValue((ans \ 60) & ":" & (ans Mod 60)), "hh:mm")
Next
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("A3,A4,A5,A6,A7,A8,A9,A10,A11,A42,A43,A44,A45,A46,A47,A48,A49,A50,A81,A82,A83,A84,A85,A86,A87,A88,A89,A120,A121,A122,A123,A124,A125,A126,A127,A128,A159,A160,A161,A162,A163,A164,A165,A166,A167,A198,A199,A200,A201,A202,A203,A204,A205,A206,A237:A245")) Is Nothing Then Exit Sub
Cancel = True
With Target(1) '
If .Value = "" Then
.Value = Now()
.NumberFormatLocal = "h:mm"
Else
.Value = ""
End If
End With
End Sub
のVBAが組み込まれています。
補足
ご回答ありがとうございます。indexOf("%uFF") のところで、「%uFF」が何を示しているのかが分かりません。ネットで検索しているのですが手がかりがつかめません。日本語文字列をescape()でLitin1コードに変換すると、最初にくるコードのようなのですが。