Jump to content
  • Sign Up

Visual Basic Copiar uma aba com base em outra e renomear com inputbox ou formulário


Go to solution Solved by Midori,

Recommended Posts

Gostaria de um código onde em um formulário, a pessoa coloque o nome do produto e o vba crie uma aba com esse nome, o  userform ou inputbox, essa nova aba tem que ser uma cópia da aba "dados" com o nome inserido pelo usuário no userform ou inputbox. Podem me ajudar?

Link to comment
Share on other sites

  • Solution

Use o método copy e depois coloque o nome do produto na planilha ativa, p.ex,

 

Sheets("Dados").Copy Before:=Sheets("Dados")
ActiveSheet.Name = "Teste"

 

Onde está Teste coloque o nome informando no controle do seu formulário

  • Amei 1
Link to comment
Share on other sites

26 minutos atrás, C.Lima2021 disse:

Como fazer agora para tirar erro do inputbox não respondido?

Faça um If na variável Renomear. Se não tiver nenhum texto é porque o input foi cancelado ou o usuário não digitou nada.

 

Se tentar renomear uma aba com nome repetido vai dar o erro 9. Uma alternativa é criar uma função para tratar esse erro antes de tentar copiar, p.ex,

 

Function PlanilhaExiste(Nome As String) As Boolean
    On Error Resume Next
    ThisWorkbook.Sheets(Nome).Activate
    PlanilhaExiste = Not Err.Number = 9
End Function

 

E na Sub do input,

If Renomear <> "" Then
    If Not PlanilhaExiste(Renomear) Then
        Sheets("BASE").Copy Before:=Sheets("BASE")
        ActiveSheet.Name = Renomear
    Else
        MsgBox "A planilha " & Renomear & " já existe", vbInformation
    End If
End If

 

  • Amei 1
Link to comment
Share on other sites

O código completo pode ser assim,

 

Sub Macro()
    Dim Renomear As String
    
    Renomear = InputBox("Produto")
    
    If Renomear <> "" Then
        If Not PlanilhaExiste(Renomear) Then
            Sheets("BASE").Copy Before:=Sheets("BASE")
            ActiveSheet.Name = Renomear
        Else
            MsgBox "A planilha " & Renomear & " já existe", vbInformation
        End If
    End If
End Sub

Function PlanilhaExiste(Nome As String) As Boolean
    On Error Resume Next
    ThisWorkbook.Sheets(Nome).Activate
    PlanilhaExiste = Not Err.Number = 9
End Function

 

  • Amei 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Create New...

Redes-Wi-Fi-capa-3d-newsletter.png

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!