Existem duas maneiras de realizar isso:
- A maneira mais simples é criar uma tabela vazia primeiro e e configurá-lo da maneira desejada.
- Use uma macro que salve as larguras de coluna da seleção, formate-a como uma Tabela e restaure as larguras das colunas. A macro pode ser configurada para funcionar com uma tecla de atalho ou um botão de comando ou pode ser adicionada à faixa de opções. É até possível interceptar a ferramenta
Format as Table
ribbon.
Para o método 2, adicione o seguinte código a um módulo padrão:
'============================================================================================
' Module : <any standard module>
' Version : 0.1.0
' Part : 1 of 1
' References : N/A
' Source : https://superuser.com/a/1332155/763880
'============================================================================================
Option Explicit
Public Sub ToggleTable_NoResize()
Dim ¡ As Long
Const s_DefaultStyle As String = "TableStyleMedium9" ' Change this for a different default style
Dim asngColumnWidths() As Single
ReDim asngColumnWidths(1 To Selection.Columns.Count)
For ¡ = LBound(asngColumnWidths) To UBound(asngColumnWidths)
asngColumnWidths(¡) = Selection.Columns(¡).ColumnWidth
Next ¡
Application.ScreenUpdating = False
Dim loNewTable As ListObject
On Error Resume Next
Set loNewTable = ActiveSheet.ListObjects.Add(xlSrcRange, Selection, , xlYes)
On Error GoTo 0
If loNewTable Is Nothing Then
Dim loExistingTable As ListObject
On Error Resume Next
Set loExistingTable = Selection.ListObject
On Error GoTo 0
If Not loExistingTable Is Nothing Then
loExistingTable.Unlist
End If
Else
loNewTable.TableStyle = s_DefaultStyle
For ¡ = LBound(asngColumnWidths) To UBound(asngColumnWidths)
Selection.Columns(¡).ColumnWidth = asngColumnWidths(¡)
Next ¡
End If
Application.ScreenUpdating = True
End Sub
Para configurá-lo com uma tecla de atalho:
- Verifique se a guia Desenvolvedor está mostrando
- Pressione Alt + L + P + M ; selecione a macro; pressione
Options…
; e defina a tecla de atalho
Notas:
O estilo padrão da tabela pode ser alterado no código onde é indicado.
Como um recurso adicional, a execução da macro novamente converterá a Tabela de volta para um intervalo normal de células.