VBA - Como preencher com traços as células vazias de uma tabela
Às vezes em uma tabela você necessita que cada célula tenha algo dentro dela, ou seja, as células vazias devem ser preenchidas com um traço ou por uma palavra ou por outro caracter qualquer.
Neste tutorial criaremos uma macro que colocará automaticamente um “-“ em todas as células vazias da tabela selecionada.
Observe na tabela abaixo que algumas células estão vazias. Estas células vazias deverãoser preenchidas por um tracinho (“-“).

Para criar a macro a qual daremos o nome de ProcCelulaVazia siga os seguintes passos:
1- Acione a Guia Desenvolvedor e no Grupo Código clique em Visual Basic para abrir o editor do VBA, ou se preferir use o atalho ALT +F11.

2- No ambiente de desenvolvimento do VBA clique no Menu Inserir e em seguida clique em Módulo para inserir um novo Módulo.

3- Na Janela de Código adicione o código abaixo:
Sub ProcCelulaVazia()
'Declara as variáveis
Dim tTab As Table
Dim cCel As Cell
Dim sCelVazia As String
'Especifica que o valor da variável sCelVazia é um traço
sCelVazia = "-"
If Selection.Information(wdWithInTable) Then
'Seleciona a tabela e percorre cada uma das células
'e verifica para ver o que ela contém.
'Se a célula estiver vazia, então o texto especificado na variável sCelVazia é colocado na célula.
Set tTab = Application.Selection.Tables(1)
For Each cCel In tTab.Range.Cells
'Uma célula aparentemente vazia contém um marcador de fim de célula
If Len(cCel.Range.Text) < 3 Then
cCel.Range = sCelVazia
'Aplica o alinhamento centralizado
cCel.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
End If
Next
End If
'Define as variáveis cCel e tTab como vazias
Set cCel = Nothing
Set tTab = Nothing
End Sub
Veja como ficará:

4- Feche o Editor do Visual Basic para voltar ao Microsoft Word, clicando no menu Arquivo e depois em Fechar e voltar para o Microsoft Word.

5- Na Guia Desenvolvedor, no Grupo Código clique em Macros.

6- Selecione a macro ProcCelulaVazia e clique em Executar.

Veja como ficou a nossa tabela.

Considerações Finais:
A linha de código “Set tTab = Application.Selection.Tables(1)”, seleciona a primeira tabela do documento.
Neste exemplo usamos um documento que contém apenas uma tabela, porém, se o documento contém várias tabela e você, por exemplo, quer adicionar os “-“ somente na terceira tabela, basta somente alterar esta linha de código como mostrado abaixo:
Set tTab = Application.Selection.Tables(3)
Caso queira adicionar o traço nas células vazias de todas as tabelas contidas no documento é só fazer uma pequena alteração na macro. Veja como ficaria:
Sub ProcCelulaVaziaTodasTab()
'Declara as variáveis
Dim tTab As table
Dim cCel As Cell
Dim sCelVazia As String
'Especifica que o valor da variável sCelVazia é um traço
'Verifica todas as tabelas e percorre por todas as células
'para ver o que ela contém.
'Se a célula estiver vazia, então o texto especificado na variável sCelVazia é colocado na célula.
For Each tTab In ActiveDocument.Range.Tables
For Each cCel In tTab.Range.Cells
'Uma célula aparentemente vazia contém um marcador de fim de célula
If Len(cCel.Range.Text) < 3 Then
cCel.Range = sCelVazia
'Aplica o alinhamento centralizado
cCel.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
End If
Next
Next
'Define as variáveis cCel e tTab como vazias
Set cCel = Nothing
Set tTab = Nothing
End Sub
Se ao invés de traço você quiser preencher as células vazias com uma palavra ou outro caracter, basta somente alterar o valor da variável sCelVazia, por exemplo:
sCelVazia = “#”
sCelVazia = ”nulo”
sCelVazia = “N/A”
Gostou? Se quiser aprender mais eu tenho um e-Book sobre VBA do Word que você pode se interessar.
Confira aqui