Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Criar nova planilha e renomear

Estou tentando programar através do VBA uma macro que faz o seguinte:

*Cria uma nova planilha

*Renomeia o nome da nova planilha para o nome "DIF"

*Condições: Caso a pasta de trabalho já possua alguma planilha com este nome, a macro deverá atribuir o novo nome como "DIF (2)". Se ja tem esta última, "DIF (3)" e assim por diante.

A parte fácil de criar a planilha e renomear eu consegui, mas as condições não estou conseguindo. Alguém poderia ajudar??

4 respostas

Felipe, tudo bem ?

Cara, acho que isso já deve estar rolando. Já que o próprio SO já faz esse papel.

Obrigado pela resposta Matheus.

Eu também achei que iria ser feito automático, mas quando eu aciono a macro (com a planilha com o mesmo nome ja criada), o VBA aponta erro de tempo de execução '1004', dizendo não ser possível renomear a planilha com o mesmo nome de uma já existente.

solução!

Olá, tudo bem?

Fiz uma macro com o que você precisa, coloquei antes de cada linha o que está sendo feito, caso você tenha alguma duvida, pode perguntar.

Sub CriarNovaPlanilha()
    ' declara as variáveis
    Dim ultimaPlanilha As Integer
    Dim planilhaVerificada As Integer

    ' define a última planilha com nome DIF encontrada,
    ' o 0 (zero) indica que ainda não foi encontrada
    ultimaPlanilha = 0

    ' desativa atualização de tela
    Application.ScreenUpdating = False

    ' adiciona nova planilha no final
    Sheets.Add After:=Sheets(Sheets.Count)

    ' percorre todas as planilhas existentes
    For i = 1 To Sheets.Count Step 1
        ' verifica os nomes das planilhas
        If Sheets(i).Name = "DIF" And ultimaPlanilha = 0 Then
            ' define que foi encontrada uma planilha com nome DIF
            ultimaPlanilha = 1
        ElseIf Sheets(i).Name Like "DIF (*)" Then
            ' pega o número que está entre os parênteses
            planilhaVerificada = CInt(Mid(Sheets(i).Name, 6, Len(Sheets(i).Name) - 6))

            ' verifica o número da planilha atual com o número da última encontrada
            If planilhaVerificada > ultimaPlanilha Then
                ' define o número da última planilha encontrada
                ultimaPlanilha = planilhaVerificada
            End If
        End If
    Next i

    ' seleciona a planiha atual
    Sheets(Sheets.Count).Select

    ' verifica qual o nome deverá ser considerado
    If ultimaPlanilha = 0 Then
        Sheets(Sheets.Count).Name = "DIF"
    Else
        Sheets(Sheets.Count).Name = "DIF (" & CStr(ultimaPlanilha + 1) & ")"
    End If

    ' ativa atualização de tela
    Application.ScreenUpdating = True
End Sub

At.,

Perfeito Mateus!! Funcionou direitinho e você deixou muito bem explicado, consegui entender. Obrigado!