Ir ao conteúdo
  • Cadastre-se

Marcelo Lisboa Conde

Membro Júnior
  • Posts

    14
  • Cadastrado em

  • Última visita

posts postados por Marcelo Lisboa Conde

  1. Como bloquear a repetição de várias linhas em uma combobox? A combobox está direto na célula e sempre que excluo um cadastro fica repetindo várias linhas do cadastro no final da lista após atualizar. E também quando incluo um cadastro a combobox fica vazia após finalizar a inclusão. Utilizo várias sub para completar o processo tais como: colocar em letra maiúscula, ordenar a coluna na aba do banco de dados, atualizar a combobox, criar ou excluir pasta no Windows explorer e salvar cadastro em PDF. Todos os processos são executados através da função Call na sub cadastrar ou excluir. No caso da inclusão fica como se estivesse em um Loop infinito, porém não tem nenhuma função Do while. Como posso solucionar estas 2 questões no VBA? Segue os comandos da sub cadastrar:

    Private Sub CommandButton2_Click()
    '
        ' botão Cadastrar
    '
    Application.ScreenUpdating = False
    '
     Dim X, Y, Z, W, fso
     X = Range("I10").Value ' X recebe nome contido na célula "I10"
     Y = Range("E8").Value ' Y recebe o ano contido na célula "E8"
     Z = Range("F8").Value ' Z recebe o mês contido na célula "F8"
     W = Range("G8").Value ' Y recebe o dia contido na célula "G8"
    '
    X = Range("I10").Value ' X recebe nome contido na célula "I10"
    '
    If X = "" Then  'Rotina checa para ver se há nomes selecionados
    '
        MsgBox "Nenhum nome informado. Processo abortado.", vbOKOnly, "CONTROLE DE ESCRITÓRIO JURÍDICO"
        Range("A1").Select
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True  ' protege a planilha
        Exit Sub
    '
    End If
    '
        Set fso = CreateObject("Scripting.FileSystemObject") 'Criar objeto
    '
           If fso.FolderExists("D:\Controle Escritorio Juridico\" & X & " " & Y & "_" & Z & "_" & W) Then
        MsgBox "PASTA CLIENTE já existe. Utilize a opção de ATUALIZAR DADOS ou crie novo cadastro com data diferente da existente.", vbOKOnly, "CONTROLE DE ESCRITÓRIO JURÍDICO"
        Range("E10").Select
        Exit Sub
    '
    End If
    '
        Call Uppercase
        Call Todas_PrimeirasLetras_Maius
        Call AdicCli
        Call AdicPCon
        Call AdicProces
        Call GravarDados
    '
        Call CriarPastas
        Call SalvaEmPDF
    '
        MsgBox "Cadastro finalizado com sucesso.", vbOKOnly, "CONTROLE DE ESCRITÓRIO JURÍDICO"
    '
        Call LimpaDadosExcluidos
    '
        cmbBusca.Value = ""
    '
    Application.ScreenUpdating = True
    '
    End Sub

    e os comandos da sub excluir:

    Private Sub btExcluir_Click()
    '
        ' exclui dados do registro
    '
    Application.ScreenUpdating = False
    '
    Dim W As Worksheet
    Dim Nome As String
    '
    Set W = Sheets("Registro")
    '
        Sheets("Registro").Visible = True  ' reexibe planilha
        ActiveWindow.SmallScroll Down:=-6
        ActiveSheet.Unprotect  ' desprotege a planilha
    '
    Nome = Range("I10").Value
    '
    If Nome = "" Then  'Rotina checa para ver se há nomes selecionados
    '
        MsgBox "Nenhum nome selecionado. Processo abortado.", vbOKOnly, "CONTROLE DE ESCRITÓRIO JURÍDICO"
        Range("A1").Select
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True  ' protege a planilha
        Exit Sub
    '
    End If
    '
        Dim Msg, Style, Title, Help, Ctxt, Response, MyString
            Msg = "Os dados do cliente selecionado serão APAGADOS definitivamente. CONFIRMA a exclusão?" ' Define a mensagem
            Style = vbYesNo + vbCritical + vbDefaultButton2 ' Define os botões
            Title = "CONTROLE DE ESCRITÓRIO JURÍDICO" ' Define o título
            Response = MsgBox(Msg, Style, Title)
        If Response = vbYes Then ' O usuário escolheu Sim
            MyString = "Sim" ' Executa ação seguinte
    '
        ActiveWorkbook.Save  ' salva arquivo antes de fechar
    '
        Call Elimina_Pasta
    '
    W.Select
    W.Range("C3").Select
    '
    Do While ActiveCell.Value <> ""
    '
        If ActiveCell.Value = Nome Then
    '
            Sheets("Registro").Select
            ActiveSheet.Unprotect  ' desprotege a planilha
            ActiveCell.EntireRow.Delete
            MsgBox "Cadastro excluído com sucesso.", vbOKOnly, "CONTROLE DE ESCRITÓRIO JURÍDICO"
            Exit Do
    '
        End If
    '
        ActiveCell.Offset(1, 0).Select
    '
    Loop
    '
    '    Call AtualizaCombo
        Call Ordenar
    '
        Sheets("Registro").Visible = False  ' oculta planilha
    '
        Sheets("Cadastro").Select
        Range("A1").Select
    '
        cmbBusca.Value = ""
    '
        Call LimpaDadosExcluidos
    '
    Application.ScreenUpdating = True
    '
    Else
        MyString = "Não" ' Nada é executado. Não salva
    End If
    '
    End Sub

     

  2. Criei uma macro para excluir a pasta do cliente no windows explorer após a exclusão do cadastro, porém executa primeiro a mensagem "Pasta Cliente FULANO 1_6_2020 não existe ou já foi excluída." e depois  executa a exclusão da pasta. Peço ajuda para verificar onde está o erro de sequencia das linhas de comando. Esta mensagem somente deveria aparecer se a pasta não existisse. Tem uma Sub que exclui o cadastro e depois chama esta macro. Segue abaixo a macro criada:

    Sub Elimina_Pasta()
    '
    '   exclui a pasta do cliente macro
    '
    Dim fso
    '
    X = Range("I10").Value ' X recebe nome contido na célula "I10"
    Y = Range("E8").Value ' Y recebe o ano contido na célula "E8"
    Z = Range("F8").Value ' Z recebe o mês contido na célula "F8"
    W = Range("G8").Value ' Y recebe o dia contido na célula "G8"
    '
    On Error GoTo NaoExistePasta
    '
    Set fso = CreateObject("Scripting.FileSystemObject")
    '
    fso.DeleteFile ("D:\Controle Escritorio\" & X & " " & W & "_" & Z & "_" & Y \ "*.*")
    fso.DeleteFolder ("D:\Controle Escritorio\" & X & " " & W & "_" & Z & "_" & Y)
    '
        MsgBox "PASTA CLIENTE excluída com sucesso.", vbOKOnly, "CONTROLE DE ESCRITÓRIO"
    '
    Set fso = Nothing
    '
    Exit Sub
    '
    NaoExistePasta:
    '
    MsgBox "Pasta Cliente " & X & " " & W & "_" & Z & "_" & Y & " não existe ou já foi excluída.", vbOKOnly, "CONTROLE DE ESCRITÓRIO"
    '
    Resume Next
    '
    End Sub

    Agradeço desde já pela ajuda.

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!