Ir ao conteúdo

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


Ir à solução Resolvido por Midori,

Posts recomendados

Postado

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?

  • Solução
Postado

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
Postado
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
Postado

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

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

×
×
  • Criar novo...