Ir ao conteúdo
  • Cadastre-se
FSoares.FCS

Excel Como localizar uma planilha em uma pasta de trabalho

Recommended Posts

Bom dia,

        Estou iniciando no excel VBA e estou precisando criar um marco onde possa procurar uma planilha (aba) dentro de uma pasta de trabalho ativa, tenho uma planilha (aba) com o nome de "Centro de Custo" onde tem vários centro de custo na coluna "C", a partir dai preciso procurar se o conteúdo da célula "C2", tem alguma planilha com o mesmo nome caso tenha, passe para linha de baixo indo até o final, caso não inclua uma nova planilha (aba) e altere o nome.

  C.Custo

1.1.0.101

1.2.0.101

1.3.0.101

2.1.0.101

2.1.0.201

2.1.0.202

2.1.0.203

2.1.0.204

Fico muito agradecido pela ajuda.

Que Deus abençoe.

image.thumb.png.9ad54c5317d43bf9d7611bff115dbc24.png

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi o que pretende, mas a explicação ficou confusa.

As pastas de trabalho com o nome centro de custo Existe ou nao?

Se existir o que deve ser feito?

 

Se nao existir o que deve ser feito?

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@FSoares.FCS , boa noite.

 

Faça um teste numa cópia de seu workbook:

 

Sub CriarCCusto()
  Dim wsCC As Worksheet, ws As Worksheet, rg As Range, i As Integer
  Dim ListaCriadas As String
  With ThisWorkbook
   Set wsCC = .Worksheets("Centro de Custo")
   Set rg = wsCC.Range("C2", wsCC.Range("C1").End(xlDown))
   For i = 1 To rg.Cells.Count
     On Error Resume Next
       Set ws = .Worksheets(rg.Cells(i).Value)
       If Err.Number = 9 Then
         If i = 1 Then
           .Worksheets.Add(After:=wsCC).Name = rg.Cells(i).Value
           ListaCriadas = rg.Cells(i).Value
         Else
           .Worksheets.Add(After:=.Worksheets(rg.Cells(i - 1).Value)).Name = rg.Cells(i).Value
           ListaCriadas = ListaCriadas & vbCrLf & rg.Cells(i).Value
         End If
       ElseIf Err.Number > 0 Then
         Exit Sub
       End If
     On Error GoTo 0
   Next i
  End With
  If ListaCriadas <> vbNullString Then MsgBox "Criada(s) a(s) Planilha(s):" & vbCrLf & ListaCriadas, vbInformation, "LISTA DE CC CRIADOS"
  Set rg = Nothing: Set wsCC = Nothing: Set ws = Nothing
End Sub

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 18/06/2018 às 19:50, CasaDoHardware disse:

Entendi o que pretende, mas a explicação ficou confusa.

As pastas de trabalho com o nome centro de custo Existe ou nao?

Se existir o que deve ser feito?

 

Se nao existir o que deve ser feito?

Bom dia,

Se existir o que deve ser feito?

se na coluna C da planilha C.Custo as celulas e tiverem com planilhas criadas, não faz nada, só coloca uma msgbox "Existe todas planilhas"

Se nao existir o que deve ser feito?

não existindo pegar a celula na coluna C da planilha C.Custo e cira uma nova planilha com o nome da celula

 

Grato pela sua resposta.

adicionado 1 minuto depois
Em 18/06/2018 às 21:13, Edson Luiz Branco disse:

@FSoares.FCS , boa noite.

 

Faça um teste numa cópia de seu workbook:

 


Sub CriarCCusto()
  Dim wsCC As Worksheet, ws As Worksheet, rg As Range, i As Integer
  Dim ListaCriadas As String
  With ThisWorkbook
   Set wsCC = .Worksheets("Centro de Custo")
   Set rg = wsCC.Range("C2", wsCC.Range("C1").End(xlDown))
   For i = 1 To rg.Cells.Count
     On Error Resume Next
       Set ws = .Worksheets(rg.Cells(i).Value)
       If Err.Number = 9 Then
         If i = 1 Then
           .Worksheets.Add(After:=wsCC).Name = rg.Cells(i).Value
           ListaCriadas = rg.Cells(i).Value
         Else
           .Worksheets.Add(After:=.Worksheets(rg.Cells(i - 1).Value)).Name = rg.Cells(i).Value
           ListaCriadas = ListaCriadas & vbCrLf & rg.Cells(i).Value
         End If
       ElseIf Err.Number > 0 Then
         Exit Sub
       End If
     On Error GoTo 0
   Next i
  End With
  If ListaCriadas <> vbNullString Then MsgBox "Criada(s) a(s) Planilha(s):" & vbCrLf & ListaCriadas, vbInformation, "LISTA DE CC CRIADOS"
  Set rg = Nothing: Set wsCC = Nothing: Set ws = Nothing
End Sub

 

Bom dia obrigado pela resposta, vai ajudar muito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×