エクセルは現実には操作したこともない門外漢ですので外しているかもです。
自動変換したいシートのタグを右クリックして[コードの表示<V)]をクリック。
その後、以下のコードをコピペ。
それで、全角のアルファベットABCやabcが入力されると半角大文字に全て変換されます。
Const 自動変換対象_行 = ",F,G,J,K,N,O,R,S,V,W,Z,AA,"
Const 自動変換対象_列 = ",4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,"
Const 自動変換対象_前 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Const 自動変換対象_後 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Integer
Dim 入力行 As String
Dim 入力列 As String
Dim 入力値 As String
入力値 = UCase(Target.Value & "")
If Len(入力値) Then
入力行 = "," & CutStr(Target.Address, "$", 2) & ","
入力列 = "," & CutStr(Target.Address, "$", 3) & ","
If InStr(1, 自動変換対象_行, 入力行, vbTextCompare) And InStr(1, 自動変換対象_列, 入力列, vbTextCompare) Then
For I = 1 To 26
If InStr(1, 入力値, Mid$(自動変換対象_前, I, 1), vbTextCompare) > 0 Then
入力値 = Replace(入力値, Mid$(自動変換対象_前, I, 1), Mid$(自動変換対象_後, I, 1))
End If
Next I
End If
Target.Value = 入力値
End If
End Sub
さて、このシートモジュールでは、CutStr関数を用いていますが、これだけは標準モジュールに登録する必要があります。
シートモジュールが表示されているVBエディタのメニュー[挿入]-[標準モジュール]をクリックしてコピペします。
後は、右上のXをクリックして閉じれば終わりです。
Public Function CutStr(ByVal Text As String, _
ByVal Separator As String, _
ByVal N As Integer) As String
Dim strDatas() As String
strDatas = Split("" & Separator & Text, Separator, , 0)
CutStr = strDatas(N * Abs((N <= UBound(strDatas))))
End Function
お礼
venzouさん、親切に回答ありがとうございます。 私は会社で使用の為、まだ実行出来ていませんが、明後日早速行ってみようと思います。 もし、またお聞きする際にはお手数お掛けしますが宜しくお願い致します。