こんばんは。
基本的には、Wordのようなショートカットは、Excelの一般的なマクロの範疇では出来ません。それは、一文字選択した段階で、Excelでは、【入力待ち】の状態になって、マクロが利きません。
だから、一旦、入力が終わった状態で、セルを選択して行わなくてはなりません。
これは、文字の最後尾を下付き、上付きにするマクロです。
時々、Userform で変更させるユーティリティを作る人がいますが、私には、それは、非効率的だと思います。Userform の起動時間やら手間を考えたら、ショートカットのほうが速いです。
このマクロは、個人用マクロブックの標準モジュールに登録してください。
ショートカットは、ツール-マクロ-マクロで、
マクロ名(M) で、名前を選択-オプション(O) で、ショートカットキー(K)
Ctrl+ □ を登録します。
なお、書式の一種ですから、最後尾の文字を替えた後は、そのまま入れると、その書式は継続されます。
'個人用マクロブックの標準モジュール
'-----------------------------------------
Sub SubScriptChange()
Dim mySize As Double
Dim intLen As Integer
'下付き
Application.ScreenUpdating = False
With ActiveCell
If .Value <> "" And VarType(.Value) = vbString Then
' .Value = Trim(.Value) 'Trim は必要ならいれてください。
mySize = .Font.Size
intLen = Len(CStr(.Value))
For i = 1 To intLen
With .Characters(Start:=i, Length:=1).Font
.Superscript = False
.Size = mySize
If i = intLen Then
.Subscript = True
Else
.Subscript = False
End If
End With
Next
End If
End With
Application.ScreenUpdating = True
End Sub
'個人用マクロブックの標準モジュール
Sub SuperScriptChange()
Dim mySize As Double
Dim intLen As Integer
'上付き
Application.ScreenUpdating = False
With ActiveCell
If .Value <> "" And VarType(.Value) = vbString Then
' .Value = Trim(.Value) 'Trim は必要ならいれてください。
mySize = .Font.Size
intLen = Len(CStr(.Value))
For i = 1 To intLen
With .Characters(Start:=i, Length:=1).Font
.Subscript = False
.Size = mySize
If i = intLen Then
.Superscript = True
Else
.Superscript = False
End If
End With
Next
End If
End With
Application.ScreenUpdating = True
End Sub
お礼
マクロは使ったことがないので、ちょっと遠慮したいのです。 ありがとうございました。