Tecla de atalho Subscrito / Sobrescrito para o Excel 2010?

2

Antecedentes

No Excel 2010, por algum motivo ridículo, não há uma tecla de atalho integrada (ou até mesmo um botão na barra de ferramentas) para subscrever / substituir o texto em uma célula de texto.

Você pode , no entanto, destacar o texto, clique com o botão direito do mouse na seleção, clique em format e, em seguida, verifique o [x] subscrito ou caixa de seleção [x] sobrescrito .

Pergunta

Existem alguns tipos de macros do Excel ou soluções alternativas para mapear duas teclas de atalho do teclado para as chaves de índice e sobrescrito, respectivamente?

(Deve ser apenas duas linhas de código - uma para o manipulador de eventos e outra para a chamada de procedimento real ... Eu mesmo escreveria uma, mas meu VBA está enferrujado, na melhor das hipóteses, e estou bastante confiante provavelmente já existe algum tipo de solução, apesar da minha incapacidade de encontrar uma via mecanismo de busca)

Obrigado por qualquer ajuda que você possa fornecer!

    
por Adam 07.04.2011 / 02:19

5 respostas

4

Eu costumo salvar o site que eu recebo, mas eu tomei a maior parte deste código de um fórum há muito tempo atrás ... Eu sugiro que essa macro seja configurada em uma tecla de atalho. Os comentários no topo devem ser auto-explicativos

    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
    
por 30.11.2012 / 23:58
1

Acabei de adicionar ao código fornecido por ScottS, então "^" ou "_" podem ser usados para preceder caracteres. Observe que TODOS os seguintes caracteres serão sub / super-scripts se você usar esses caracteres. Por exemplo, Q_in (m ^ 3 / s) não será exibido corretamente, você precisará usar a sintaxe de ScottS para isso: Q < em > (m {3} / s). O código aqui funcionará para a sintaxe de ScottS, mas também inclui opções "_" e "^", como Q_in ou Q_supply gas, em que "supply gas" é subscrito.

Para aqueles que não estão familiarizados com macros: Se você não tiver uma guia "Desenvolvedor" no Excel, precisará ativá-la e salvar a planilha como uma planilha habilitada para macro. Botão Office (botão circular superior esquerdo) > clique em "Opções do Excel" no canto inferior direito > visualizando a guia "Popular", selecione "Mostrar guia do desenvolvedor na faixa de opções"

Você precisará adicionar essa macro: "Alt + F11" e "Inserir" > "módulo" e cole o código abaixo. Você pode definir um atalho de teclado pressionando "Alt + F8" enquanto visualiza planilha ou clique no botão "Macros" na guia "Desenvolvedor". Selecione / highlite esta macro (Super_Sub_mod) e clique em "Opções ..." é onde você pode definir um atalho começando com "Ctrl", como "Ctrl + j", simplesmente digitando "j" na caixa.

As alterações não são feitas automaticamente apenas porque você tem a sintaxe correta. Você deve selecionar células individuais ou múltiplas depois de escrevê-las com o "_" "^" "{text}" "< text >" sintaxe, em seguida, execute a macro.

    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
    
por 16.04.2013 / 21:18
0

Você não pode executar uma macro enquanto estiver no "Modo de Edição da Célula" (cfr. link ). Além disso, não há botões de fita para fazer algo assim. Sua única chance parece ser este utilitário: link .

    
por 06.10.2011 / 21:00
0

Supondo que você queira destacar o texto dentro da célula, e não apenas o texto selecionado, crie uma macro com qualquer tecla de atalho desejada e o seguinte VBA:

ActiveCell.Font.Superscript = True
    
por 24.04.2012 / 11:17
0

Você pode adicionar os botões ausentes do Sobrescrito e do Subscrito baixando o software gratuito do link

    
por 07.08.2013 / 16:17