none
excluir e renomear sheet via VBA e usando if RRS feed

  • Pergunta

  • Estou fazendo uma agenda onde as sheets são as categorias.

    dito isso, necessito de duas coisas:

    um código onde quando ficar apenas um sheet seja ignorado o comando de excluir sheet;

    um código onde ao se tentar renomear ou criar uma sheet com o nome existente que seja o comando ignorado e apareça uma textbox informando que o nome é existente, não podendo renomear ou criar uma sheet com esse nome.

    É coisa simples pra quem não é básico como eu.

    Grato a todos

    Caso queiram, ver a agenda de telefone. 

    http://www.tomasvasquez.com.br/forum/viewtopic.php?f=23&t=2025

    quinta-feira, 12 de julho de 2012 20:10

Respostas

  • Veja esses dois snippets e tente aproveitá-los em seu código. Você não terá os problemas mencionados:

    Sub CriarPlanilha()
        Dim ws As Worksheet
        Dim sPlanilha As String
        
        sPlanilha = InputBox("Digite o nome de uma nova Planilha a ser criada:", , "Plan1")
        
        On Error Resume Next
        Set ws = Sheets(sPlanilha)
        On Error GoTo 0
        If ws Is Nothing Then
            Set ws = Sheets.Add
            ws.Name = sPlanilha
        Else
            MsgBox "Já existe uma Planilha com esse nome!", vbCritical
        End If
        
    End Sub
    
    Sub ApagarPlanilha()
        Dim ws As Worksheet
        Dim sPlanilha As String
        
        sPlanilha = InputBox("Digite o nome da Planilha a ser excluída:", , "Plan1")
        
        On Error Resume Next
        Set ws = Sheets(sPlanilha)
        On Error GoTo 0
        If ws Is Nothing Then
            MsgBox "Não existe uma Planilha com esse nome!", vbCritical
        Else
            Application.DisplayAlerts = False
            ws.Delete
            Application.DisplayAlerts = True
        End If
       
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quarta-feira, 18 de julho de 2012 21:15
    Moderador
  • Boa tarde, Substitua para o seguinte. Activesheet.name = "Rel " & activesheet.count Abraço.
    sábado, 30 de agosto de 2014 18:41

Todas as Respostas

  • Não abri seu exemplo, mas no Excel, por padrão, não é possível excluir toda as Planilha (você sempre deve ter uma Planilha visível) e não é possível ter duas Planilhas com o mesmo nome.

    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sexta-feira, 13 de julho de 2012 22:56
    Moderador
  • Eu sei, o que ocorre é que na agenda há a possibilidade de criar sheet (que servem como categorias) e excluir.

    Então, não há nada que impeça o usuário de tentar excluir todas, fato que causa erro na vba.

    De mesma maneira, há a possibilidade de o usuário tentar repetir o nome, caso que também da erro no vba.

    Gostaria de impedir esse erro


    sábado, 14 de julho de 2012 00:40
  • Veja esses dois snippets e tente aproveitá-los em seu código. Você não terá os problemas mencionados:

    Sub CriarPlanilha()
        Dim ws As Worksheet
        Dim sPlanilha As String
        
        sPlanilha = InputBox("Digite o nome de uma nova Planilha a ser criada:", , "Plan1")
        
        On Error Resume Next
        Set ws = Sheets(sPlanilha)
        On Error GoTo 0
        If ws Is Nothing Then
            Set ws = Sheets.Add
            ws.Name = sPlanilha
        Else
            MsgBox "Já existe uma Planilha com esse nome!", vbCritical
        End If
        
    End Sub
    
    Sub ApagarPlanilha()
        Dim ws As Worksheet
        Dim sPlanilha As String
        
        sPlanilha = InputBox("Digite o nome da Planilha a ser excluída:", , "Plan1")
        
        On Error Resume Next
        Set ws = Sheets(sPlanilha)
        On Error GoTo 0
        If ws Is Nothing Then
            MsgBox "Não existe uma Planilha com esse nome!", vbCritical
        Else
            Application.DisplayAlerts = False
            ws.Delete
            Application.DisplayAlerts = True
        End If
       
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quarta-feira, 18 de julho de 2012 21:15
    Moderador
  • ola, preciso de um código para criar e renomear nova sheet mas com um numero sequencial:

    tipo assim . Rel 01, Rel 02, Rel 03

    eu usei este codigo para criar:

    Sub CriarPlanilha()
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = "Rel 05"
    End Sub

    mas como faço para ele numerar automaticamente?

    sábado, 30 de agosto de 2014 01:07
  • Boa tarde, Substitua para o seguinte. Activesheet.name = "Rel " & activesheet.count Abraço.
    sábado, 30 de agosto de 2014 18:41