Notifications
Clear all

Ajuda Com VBA

51 Posts
2 Usuários
0 Reactions
6,723 Visualizações
(@aprendiz)
Posts: 80
Trusted Member
Topic starter
 

olá a todos estou com uma dúvida em VBA quero o seguinte tenho duas planilhas cadastro e backup e tem um userforme com multipaginas contendo cada pagina um combobox, dois botões ativar aluno e desativar aluno e uma textbox. na combobox terá o nome de todos os alunos que estão na planilha cadastro e quando eu pesquisar um aluno na combobox ele me mostre na textbox o nome e quando eu clicar em desativar aluno ele pegue todos os dados do aluno e jogue na planilha backup e o outro botao ativar aluno pegue os dados que estaoo no backup jogue de volta para a planilha cadastro e quando ele estiver desativado mostre na listbox todos os dados dele e o nome dele em vermelho vou disponibilizar modelo da planilha so preciso do código dos botões e sim se tem como fazer a combobox mostrar so o que ta na planilha tirara essas linhas em branco tem o modelo abaixo da planilha

 
Postado : 07/12/2014 11:55 am
selmo
(@selmo)
Posts: 236
Estimable Member
 

Só uma observação, não seria mais prático criar uma coluna com o estátus e carregar o combobox filtrando com critério "ativo" e "desativado".

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original."
Albert Einstein

 
Postado : 07/12/2014 1:30 pm
(@aprendiz)
Posts: 80
Trusted Member
Topic starter
 

Não Porque tem cursos que duram 3 meses e tem alunos que renovam e nao renovam e tem aqui uma planilha que filtra alunos de um determinado curso caso o aluno nao renove e eu nao remova ele para a planolha backup quando eu for fazer a contagem de quantos alunos tem em determinado curso o que nao renovou ainda estará la participando da contagem entendeu

 
Postado : 07/12/2014 1:53 pm
(@aprendiz)
Posts: 80
Trusted Member
Topic starter
 

consegui usando o recortar e copiar mas a planilha que eu recorto fica a linha em branco tem como fazer o debaixo subir ocupando a linha embranco e na outra planilha quando vai colar so quer colar na celula A2 e como se fosse fixo tem como fazer ele ver que a celula ta ocupada e descer para a proxima em branco so falta isso

 
Postado : 07/12/2014 3:38 pm
selmo
(@selmo)
Posts: 236
Estimable Member
 

Não vi o seu ultimo modelo, mas fiz algo de acordo com oque eu havia falado, dá uma olhada.

Qualquer dúvida, alteração ou acréscimo estamos ae para tentar ajudar.

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original."
Albert Einstein

 
Postado : 07/12/2014 6:21 pm
(@aprendiz)
Posts: 80
Trusted Member
Topic starter
 

Selmo meu brother ta muito boa a sua planilha da para adaptar ao meu projeto. será que tem como assim que o programa ver que o estatus dele esta desativo ele não faca a contagem desse aluno desativado acho que fica meio vago eu dizendo então vou fazer o seguinte da uma olhada no meu projeto se não for abusar demais né eu acho que vc vendo ele pode ter a ideia que eu quero fazer se puder tirar ele da contagem sem precisar excluir agradeco muito

 
Postado : 08/12/2014 8:35 am
selmo
(@selmo)
Posts: 236
Estimable Member
 

Então, eu vi a sua planilha. Tenta usar um metodo diferente para fazer a contagem, como não vi o estatus de Ativado ou Desativado na planilha, então aconselho a acrescentar. E substituir essa parte do código:

TextBox1 = ListBox4.ListCount - 1

por essa

Dim Ws as Worksheet 
Dim linhafinal as Long

Set ws = Sheets("Bancodedados") 'Nome da planilha a qual será usada para contagem
linhafinal = ws.Cells(Rows.Count, 1).End(xlUp).Row  'Coluna A, verificar a ultima linha preenchida

For i = 2 To linhafinal
    If ws.Range("A" & i).Text = "Ativado" Then 'Substitua pela coluna a qual obterá o valor Ativado
        ValorAtivado = ValorAtivado + 1
        
        End If
    i = i + 1 - 1
 Next
TextBox1.Text = ValorAtivado

É meio amador mas funciona, qualquer duvida, é só dar um toque ae ^^

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original."
Albert Einstein

 
Postado : 08/12/2014 10:19 am
selmo
(@selmo)
Posts: 236
Estimable Member
 

E percebi que usa um formulário de cadastro com foto, estava a um tempo atrás trabalhando em um, dá uma olhada se interessar. =)

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original."
Albert Einstein

 
Postado : 08/12/2014 1:19 pm
(@aprendiz)
Posts: 80
Trusted Member
Topic starter
 

selmo Primeiramente agradecer por vc está me ajudando nesta jornada é sua plan com foto ta ótima para eu adaptar na minha plan ate porque a minha não ta com essa opção de alterar foto muito obrigado.tenho uma dúvida em uma parte do código da plan que vc disponibilizou para ativar e desativar alunos e nessa parte

Private Sub CarregarAlunos()
Dim i As Long, j As Long, area As Variant
Dim temp As Variant
ultimalinha = Bancodedados.Cells(Rows.Count, "A").End(xlUp).Row

area = Range(Cells(2, 2), Cells(ultimalinha, 2)).Value
For i = 1 To UBound(area, 1)
For j = i + 1 To UBound(area, 1)
If area(i, 1) > area(j, 1) Then
temp = area(i, 1)
area(i, 1) = area(j, 1)
area(j, 1) = temp
End If
Next
Next
CmbAluno.List = area
End Sub

como eu adapto a minha plan nesta parte do código Selmo eu coloquei o estatus no final depois do caminho da foto o que devo alterar aqui para que carregue os dados dos alunos

 
Postado : 08/12/2014 4:57 pm
selmo
(@selmo)
Posts: 236
Estimable Member
 

Então, eu meio que adquiri alguns costumes, a exemplo de declarar a sheet como variavel, para evitar em possivel caso de renomear a planilha, ter que sair alterando o código todo. Declaro como variavel e depois seto no inicio do código, de resto o código segue com pequenas alterações ^^

Dim i As Long, j As Long, area As Variant
        Dim temp As Variant
        Dim ADB As Worksheet
        Set ADB = Sheets("bancodedados")
        UltimaLinha = ADB.Cells(Rows.Count, "a").End(xlUp).Row
    
        area = Range(Cells(2, 1), Cells(UltimaLinha, 1)).Value
        For i = 1 To UBound(area, 1)
             For j = i + 1 To UBound(area, 1)
                 If area(i, 1) > area(j, 1) Then
                      temp = area(i, 1)
                      area(i, 1) = area(j, 1)
                      area(j, 1) = temp
                 End If
             Next
        Next
        CmbAluno.List = area

Quaisquer duvidas, dá um toque ae ^^

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original."
Albert Einstein

 
Postado : 08/12/2014 5:45 pm
(@aprendiz)
Posts: 80
Trusted Member
Topic starter
 

Blz selmo Vou ver aqui qualquer dúvida te falo

 
Postado : 08/12/2014 5:55 pm
(@aprendiz)
Posts: 80
Trusted Member
Topic starter
 

Selmo desculpe ai viu cara por te perguntar muito sou novo nessa área olha ta carregando na listview deu certo mas quando vou carregar na comobo aluno da erro. da uma olhada ai na plan ta na última guia ativar e desativar aluno o erro ta na parte desse código

Private Sub CmbAluno_Change()
' CARREGA NAS TEXTBOX O ITEM FILTRADO NA COMBOBOX ALUNO
Dim Tmp As Long
Dim i As Long
Dim sDescricao

sDescricao = CmbAluno.Text

Tmp = FrmDadosListView.ListView2.ListItems.Count

For i = 1 To Tmp

With ListView2
If .ListItems(i).SubItems(1) > sDescricao Then
FrmDadosListView.ListView2.ListItems.Remove i
i = i - 1
Tmp = Tmp - 1
If i = Tmp Then Exit For
Tmp = FrmDadosListView.ListView2.ListItems.Count

ElseIf .ListItems(i).SubItems(1) < sDescricao Then
FrmDadosListView.ListView2.ListItems.Remove i
i = i - 1
Tmp = Tmp - 1
If i = Tmp Then Exit For
Tmp = FrmDadosListView.ListView2.ListItems.Count

ElseIf .ListItems(i).SubItems(1) = sDescricao Then
Tmp = Tmp
If i = Tmp Then Exit For
Tmp = FrmDadosListView.ListView2.ListItems.Count
End If
End With
Next
End Sub

se puder dar uma olhada ai na plan e tbm tem hora que carrega os alunos na combo mas tem hora que nao carrega isso acontece quando fecho e abro novamente mas eu percebi que quando eu abro o useforme e a planilha Bancodedados ta aberta aparece os nomes na combo mas quando fecho e abro novamente ta vazio

 
Postado : 08/12/2014 6:31 pm
selmo
(@selmo)
Posts: 236
Estimable Member
 

Estou só no celular por enquanto, mas de cara percebi que esta faltando um ponto nessa parte do código logo após o nome do frmdados. Altera e veja se funciona
Tmp = FrmDados.ListView.ListView2.ListItems.Count

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original."
Albert Einstein

 
Postado : 08/12/2014 6:43 pm
selmo
(@selmo)
Posts: 236
Estimable Member
 

Esquece oque eu disse rs, visualização no celular é péssimo. Então vou dar uma olhada e assim que possível eu retorno.

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original."
Albert Einstein

 
Postado : 08/12/2014 6:55 pm
(@aprendiz)
Posts: 80
Trusted Member
Topic starter
 

Nada Selmo ta dando o mesmo erro valeu sem pressa brother

 
Postado : 08/12/2014 6:58 pm
Página 1 / 4