Excel 2010では、いくつかのばかげた理由により、テキストセル内のテキストを下付き/上書きするための組み込みのホットキー(またはツールバーのボタン)がありません。
あなたcanただし、テキストを強調表示し、選択範囲を右クリックして、 format、次に確認します [x] subscript または [x] superscript チェックボックス。
2つのキーボードホットキーをそれぞれ下付き文字キーと上付き文字キーにマップするためのExcelマクロまたは回避策はありますか?
(たとえば、イベントハンドラー用と実際のプロシージャ呼び出し用の2行のコードのみである必要があります...自分で1つ作成しますが、VBAはせいぜい錆びており、おそらくそこにあると確信しています。検索エンジンで見つけることができなかったにもかかわらず、すでに何らかの解決策があります)
あなたが提供できるどんな助けにも感謝します!
私は通常、これらを取得したWebサイトを保存しますが、このコードの大部分は何年も前のフォーラムから取得しました...このマクロをホットキーに設定することをお勧めします。上部のコメントは自明である必要があります
Sub Super_Sub()
'
' Keyboard Shortcut: Ctrl+Shift+D
'
' If the characters are surrounded by "<" & ">" then they will be subscripted
' If the characters are surrounded by "{" & "}" then they will be superscripted
'
Dim NumSub
Dim NumSuper
Dim SubL
Dim SubR
Dim SuperL
Dim SuperR
Dim CheckSub, CheckSuper as Boolean
Dim CounterSub, CounterSuper as Integer
Dim aCell, CurrSelection As Range
For Each c In Selection
c.Select
CheckSub = True
CounterSub = 0
CheckSuper = True
CounterSuper = 0
aCell = ActiveCell
'
NumSub = Len(aCell) - Len(Application.WorksheetFunction.Substitute(aCell, "<", ""))
NumSuper = Len(aCell) - Len(Application.WorksheetFunction.Substitute(aCell, "{", ""))
'
If Len(aCell) = 0 Then Exit Sub
If IsError(Application.Find("<", ActiveCell, 1)) = False Then
Do
Do While CounterSub <= 1000
SubL = Application.Find("<", ActiveCell, 1)
SubR = Application.Find(">", ActiveCell, 1)
ActiveCell.Characters(SubL, 1).Delete
ActiveCell.Characters(SubR - 1, 1).Delete
ActiveCell.Characters(SubL, SubR - SubL - 1).Font.Subscript = True
CounterSub = CounterSub + 1
If CounterSub = NumSub Then
CheckSub = False
Exit Do
End If
Loop
Loop Until CheckSub = False
End If
'
'
If IsError(Application.Find("{", ActiveCell, 1)) = False Then
Do
Do While CounterSuper <= 1000
SuperL = Application.Find("{", ActiveCell, 1)
SuperR = Application.Find("}", ActiveCell, 1)
ActiveCell.Characters(SuperL, 1).Delete
ActiveCell.Characters(SuperR - 1, 1).Delete
ActiveCell.Characters(SuperL, SuperR - SuperL - 1).Font.Superscript = True
CounterSuper = CounterSuper + 1
If CounterSuper = NumSuper Then
CheckSuper = False
Exit Do
End If
Loop
Loop Until CheckSuper = False
End If
'
Next
End Sub
ScottSが提供するコードに追加したので、文字の前に「^」または「_」を使用できます。これらの文字を使用すると、後続のすべての文字がサブ/スーパースクリプト化されることに注意してください。たとえば、Q_in(m ^ 3/s)は正しく表示されません。これには、ScottSの構文を使用する必要があります:Q <in>(m {3}/s)。ここのコードはScottSの構文で機能しますが、「供給ガス」が下付き文字であるQ_inやQ_supplyガスなどの「_」および「^」オプションも含まれています。
マクロに慣れていない場合:Excelに[開発者]タブがない場合は、それを有効にして、ワークシートをマクロ対応のワークシートとして保存する必要があります。 Officeボタン(左上の円形ボタン)>右下の[Excelオプション]をクリック> [人気]タブを表示する[開発者タブをリボンで表示]をオンにする
次に、次のマクロを追加する必要があります:「Alt + F11」、「挿入」>「モジュール」、以下のコードを貼り付けます。スプレッドシートの表示中に「Alt + F8」を押すか、「開発者」タブの「マクロ」ボタンをクリックして、キーボードショートカットを設定できます。このマクロ(Super_Sub_mod)を選択/ハイライトし、[オプション...]をクリックします。ここで、ボックスに「j」と入力するだけで、「Ctrl + j」などの「Ctrl」で始まるショートカットを設定できます。
適切な構文があるからといって、変更が自動的に行われるわけではありません。 "_" "^" "{text}" "<text>"構文でセルを書き込んだ後、個々のセルまたは複数のセルを選択してから、マクロを実行する必要があります。
Sub Super_Sub_mod()
'
' Keyboard Shortcut: set in "options" of macro window (alt+F8 in spreadsheet view)
'
' If the characters are preceded by an underscore "_" then they will be subscripted
' If the characters are preceded by "^" then they will be superscripted
'
Dim NumSub
Dim NumSuper
Dim SubL
Dim SubR
Dim SuperL
Dim SuperR
Dim CheckSub, CheckSuper As Boolean
Dim CounterSub, CounterSuper As Integer
Dim aCell, CurrSelection As Range
For Each c In Selection
c.Select
CheckSub = True
CounterSub = 0
CheckSuper = True
CounterSuper = 0
aCell = ActiveCell
'
'Subscripts
'all following "_"
If Len(aCell) = 0 Then Exit Sub
If IsError(Application.Find("_", ActiveCell, 1)) = False Then
NumSub = Len(aCell) - Len(Application.WorksheetFunction.Substitute(aCell, "_", ""))
Do
Do While CounterSub <= 1000
SubL = Application.Find("_", ActiveCell, 1)
SubR = Len(ActiveCell)
ActiveCell.Characters(SubL, 1).Delete
ActiveCell.Characters(SubL, SubR - SubL).Font.subscript = True
CounterSub = CounterSub + 1
If CounterSub = NumSub Then
CheckSub = False
Exit Do
End If
Loop
Loop Until CheckSub = False
End If
'select region "<text>"
If IsError(Application.Find("<", ActiveCell, 1)) = False Then
NumSub = Len(aCell) - Len(Application.WorksheetFunction.Substitute(aCell, "<", ""))
Do
Do While CounterSub <= 1000
SubL = Application.Find("<", ActiveCell, 1)
SubR = Application.Find(">", ActiveCell, 1)
ActiveCell.Characters(SubL, 1).Delete
ActiveCell.Characters(SubR - 1, 1).Delete
ActiveCell.Characters(SubL, SubR - SubL - 1).Font.subscript = True
CounterSub = CounterSub + 1
If CounterSub = NumSub Then
CheckSub = False
Exit Do
End If
Loop
Loop Until CheckSub = False
End If
'
'Superscripts
'all following "_"
If IsError(Application.Find("^", ActiveCell, 1)) = False Then
NumSuper = Len(aCell) - Len(Application.WorksheetFunction.Substitute(aCell, "^", ""))
Do
Do While CounterSuper <= 1000
SuperL = Application.Find("^", ActiveCell, 1)
ActiveCell.Characters(SuperL, 1).Delete
ActiveCell.Characters(SuperL, SuperR - SuperL).Font.Superscript = True
CounterSuper = CounterSuper + 1
If CounterSuper = NumSuper Then
CheckSuper = False
Exit Do
End If
Loop
Loop Until CheckSuper = False
End If
'select region "{text}"
If IsError(Application.Find("{", ActiveCell, 1)) = False Then
NumSuper = Len(aCell) - Len(Application.WorksheetFunction.Substitute(aCell, "{", ""))
Do
Do While CounterSuper <= 1000
SuperL = Application.Find("{", ActiveCell, 1)
SuperR = Application.Find("}", ActiveCell, 1)
ActiveCell.Characters(SuperL, 1).Delete
ActiveCell.Characters(SuperR - 1, 1).Delete
ActiveCell.Characters(SuperL, SuperR - SuperL - 1).Font.Superscript = True
CounterSuper = CounterSuper + 1
If CounterSuper = NumSuper Then
CheckSuper = False
Exit Do
End If
Loop
Loop Until CheckSuper = False
End If
Next
End Sub
選択したテキストだけでなく、セル内のテキストを強調表示する場合は、必要なホットキーと次のVBAを使用してマクロを作成します。
ActiveCell.Font.Superscript = True
上付き文字または下付き文字にする文字の前にある「^」または「_」に対して機能するコードを次に示します。これは、「^」または「_」に続く1文字の上付き文字または下付き文字のみであり、両側を括弧で囲むよりも時間がかからないことがわかりました。共有したいと思っただけです! :)
Sub sscript()
'
' sscript Macro
'
' Keyboard Shortcut: Ctrl+Shift+G
'
' If the characters are surrounded by "<" & ">" then they will be subscripted
' If the characters are surrounded by "{" & "}" then they will be superscripted
'
Dim NumSub
Dim NumSuper
Dim SubL
Dim SubR
Dim SuperL
Dim SuperR
Dim CheckSub, CheckSuper As Boolean
Dim CounterSub, CounterSuper As Integer
Dim aCell, CurrSelection As Range
For Each c In Selection
c.Select
CheckSub = True
CounterSub = 0
CheckSuper = True
CounterSuper = 0
aCell = ActiveCell
'
NumSub = Len(aCell) - Len(Application.WorksheetFunction.Substitute(aCell, "_", ""))
NumSuper = Len(aCell) - Len(Application.WorksheetFunction.Substitute(aCell, "^", ""))
'
If Len(aCell) = 0 Then Exit Sub
If IsError(Application.Find("_", ActiveCell, 1)) = False Then
Do
Do While CounterSub <= 1000
SubL = InStr(1, ActiveCell, "_", vbTextCompare)
SubR = InStr(1, ActiveCell, "_", vbTextCompare) + 1
ActiveCell.Characters(SubL, 1).Delete
ActiveCell.Characters(SubL, 1).Font.subscript = True
CounterSub = CounterSub + 1
If CounterSub = NumSub Then
CheckSub = False
Exit Do
End If
Loop
Loop Until CheckSub = False
End If
'
'
If IsError(Application.Find("^", ActiveCell, 1)) = False Then
Do
Do While CounterSuper <= 1000
SuperL = InStr(1, ActiveCell, "^", vbTextCompare)
SuperR = InStr(1, ActiveCell, "^", vbTextCompare) + 1
ActiveCell.Characters(SuperL, 1).Delete
ActiveCell.Characters(SuperL, 1).Font.Superscript = True
CounterSuper = CounterSuper + 1
If CounterSuper = NumSuper Then
CheckSuper = False
Exit Do
End If
Loop
Loop Until CheckSuper = False
End If
'
Next
End Sub
「セル編集モード」(cfr。 http://social.msdn.Microsoft.com/Forums/en-US/isvvba/thread/3333e18b-cef3-4d78-)では、マクロを実行できません。 b47a-6916a1b2d84c / )。また、そのようなことをするためのリボンボタンはありません。あなたの唯一のチャンスはこのユーティリティのようです: http://www.panuworld.net/utils/Excel/ 。