Boa tarde, comecei a pouco a me aprofundar em Excel avançado e estou criando um projeto de cadastro (clientes, produtos e funcionário). Tudo está indo muito bem, porém eu notei algumas coisas que não consegui identificar de onde vem.
Na tela de clientes, por exemplo, consigo inserir, alterar e excluir e utilizei um Combobox para pesquisar entre os cadastros já realizados. Só que, ao excluir um cadastro, na planilha automaticamente, as linha adjacentes se juntam, sem deixar linhas em branco entre elas. Mas no Combobox ficam "espaços como se tivesse algum dado ali, só que está vazio.
Segue a rotina que eu criei no Combobox (lembrando que estou começando hehe)
Private Sub cmb_localizar_Click() 'Conta o total de linhas cadastradas totalcliente = Worksheets("Clientes").UsedRange.Rows.Count For i = 0 To totalcliente If cmb_localizar.ListIndex = i Then txt_nome.Enabled = True txt_cpf.Enabled = True txt_end.Enabled = True txt_bairro.Enabled = True txt_cidade.Enabled = True txt_cep.Enabled = True txt_fone.Enabled = True txt_celular.Enabled = True btn_excluir.Enabled = True btn_alterar.Enabled = True btn_imprimir.Enabled = True btn_gravar.Enabled = False txt_nome.BackColor = &H80000005 txt_cpf.BackColor = &H80000005 txt_end.BackColor = &H80000005 txt_bairro.BackColor = &H80000005 txt_cidade.BackColor = &H80000005 txt_cep.BackColor = &H80000005 txt_fone.BackColor = &H80000005 txt_celular.BackColor = &H80000005 txt_nome = Cells(i + 2, 1) txt_cpf = Cells(i + 2, 2) txt_end = Cells(i + 2, 3) txt_bairro = Cells(i + 2, 4) txt_cidade = Cells(i + 2, 5) txt_cep = Cells(i + 2, 6) txt_fone = Cells(i + 2, 7) txt_celular = Cells(i + 2, 8) Exit Sub End If Next End Sub
Segue a tela de como está o problema abaixo
http://oi62.tinypic.com/20zbd02.jpg
Agora na tela de fornecedores, o campo A1 aparece quando não tem nenhum cadastro
Private Sub cmb_localizar_Click() 'Conta o total de linhas cadastradas totalf = Worksheets("Fornecedores").UsedRange.Rows.Count For i = 0 To totalf If cmb_localizar.ListIndex = i Then txt_nome.Enabled = True txt_fone.Enabled = True txt_end.Enabled = True txt_bairro.Enabled = True txt_cidade.Enabled = True txt_cep.Enabled = True txt_site.Enabled = True btn_excluir.Enabled = True btn_alterar.Enabled = True btn_imprimir.Enabled = True btn_gravar.Enabled = False txt_nome.BackColor = &H80000005 txt_fone.BackColor = &H80000005 txt_end.BackColor = &H80000005 txt_bairro.BackColor = &H80000005 txt_cidade.BackColor = &H80000005 txt_cep.BackColor = &H80000005 txt_site.BackColor = &H80000005 txt_nome = Cells(i + 2, 1) txt_fone = Cells(i + 2, 2) txt_end = Cells(i + 2, 3) txt_bairro = Cells(i + 2, 4) txt_cidade = Cells(i + 2, 5) txt_cep = Cells(i + 2, 6) txt_site = Cells(i + 2, 7) Exit Sub End If Next End Sub
UserForm
Private Sub UserForm_Initialize() Worksheets("Fornecedores").Select 'Conta o total de linha cadastradas totalcliente = Worksheets("Fornecedores").UsedRange.Rows.Count 'Código para preencher a caixa Localizar cmb_localizar.RowSource = "Fornecedores!a2:a" & totalcliente End Sub
embaixo do ultimo comando de onde deleta a linha cole o seguinte :
cmb_localizar.Clear 'deleta tudo no combobox UserForm_Initialize 'atualiza o combobox sem o espaço em branco
Obrigado pelo ajuda, mas não funcionou. Ele gera um erro não identificado na linha cmb_localizar.Clear
Identifiquei que o problema está na rotina de exclusão, onde ele exclui os dados da linha mas não a linha. Devo estar esquecendo de algum código
Segue a rotina do botão excluir
Private Sub btn_excluir_Click() 'Variável armazena resposta sobre pergunta de exclusão resposta = MsgBox("Confirma exclusão do CLIENTE atual?", vbYesNo, "Excluir Cliente") If resposta = vbYes Then linha = cmb_localizar.ListIndex + 2 Worksheets("Clientes").Rows(linha).Delete txt_nome = "" txt_cpf = "" txt_end = "" txt_bairro = "" txt_cidade = "" txt_cep = "" txt_fone = "" txt_celular = "" cmb_localizar = "" txt_nome.Enabled = False txt_cpf.Enabled = False txt_end.Enabled = False txt_bairro.Enabled = False txt_cidade.Enabled = False txt_cep.Enabled = False txt_fone.Enabled = False txt_celular.Enabled = False btn_gravar.Enabled = False btn_excluir.Enabled = False txt_nome.BackColor = &H8000000F txt_cpf.BackColor = &H8000000F txt_end.BackColor = &H8000000F txt_bairro.BackColor = &H8000000F txt_cidade.BackColor = &H8000000F txt_cep.BackColor = &H8000000F txt_fone.BackColor = &H8000000F txt_celular.BackColor = &H8000000F MsgBox "Cliente excluído com sucesso", vbInformation, "Cliente excluído" End If 'Comando para salvar a planilha ActiveWorkbook.Save End Sub
Consegui resolver. Basta fazer o seguinte
Após
If resposta = vbYes Then linha = cmb_localizar.ListIndex + 2
Apagar
Worksheets("Clientes").Rows(linha).Delete
E implementar
'Seleciona a linha correspondente a caixa Localizar Worksheets("Clientes").Rows(linha).Select 'Deleta toda a linha, puxando a planilha para cima Selection.Delete shift:=x1up 'Seleciona a planilha Clientes Worksheets("Clientes").Select 'Conta o total de linha cadastradas totalcliente = Worksheets("Clientes").UsedRange.Rows.Count 'Preenche a caixa Localizar cmb_localizar.RowSource = "Clientes!a2:a" & totalcliente