Vídeo recomendado
https://youtu.be/diWPPPhW-9E

[Resolvido]Formulário "Out of range"

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Rui Maciel
Colaborador
Colaborador
Mensagens: 61
Registrado em: Dom Set 02, 2012 3:00 pm

[Resolvido]Formulário "Out of range"

Mensagem por Rui Maciel »

Boa noite minha boa gente
Podem ajudar-me na solução do problema que tenho com o userform4, pois, não consigo que ele execute, dá erro 9, "out of rage", por mais voltas que faça não chego lá. O que pretendo com este formulário é das abas de 1 a 12 retirar quais os clientes que estão em falta na coluna "G", tendo por base a palavra "Vencido" da coluna "H".
Desde já obrigado e grato pela vossa paciência e amabilidade.
RMaciel
Anexos
Contas-a-receber.7z
(95.58 KiB) Baixado 219 vezes
Editado pela última vez por Rui Maciel em Dom Nov 10, 2019 10:38 am, em um total de 3 vezes.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Rui Maciel
Colaborador
Colaborador
Mensagens: 61
Registrado em: Dom Set 02, 2012 3:00 pm

Re: Formulário "Out of range"

Mensagem por Rui Maciel »

Boa noite
Alguma ideia de como implementar?
Grato
RMaciel


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Formulário "Out of range"

Mensagem por Reinaldo »

Primeiro suas palnilhas tem numeros "01"/"02".. e combobox recebe/devolve 1/2/3/....
é preciso ajustar/compatibilizar isso.


Rui Maciel
Colaborador
Colaborador
Mensagens: 61
Registrado em: Dom Set 02, 2012 3:00 pm

Re: Formulário "Out of range"

Mensagem por Rui Maciel »

Bom dia e obrigado Reinaldo, era isso mesmo, grato.
No entanto, aparecem todas as linhas e somente queria que só devolvesse as linhas onde tem "Vencido".
RMaciel
Anexos
Contas-a-receber.7z
(97.97 KiB) Baixado 218 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Formulário "Out of range"

Mensagem por Reinaldo »

Experimente utilizar a rotina <ComboBox1_Change> alterada conforme abaixo:

Código: Selecionar todos

Private Sub ComboBox1_Change()
Dim REGISTROS(8 To 154, 2 To 8) As String
Dim linha As Long, LINHA2 As Long
Dim R As Integer

If Me.ComboBox1.ListIndex >= 0 Then
    ListBox1.ColumnCount = 6
    LINHA2 = 8
    For linha = 9 To Sheets(ComboBox1.Value).Cells(Rows.Count, 8).End(xlUp).Row
        If UCase(CStr(Sheets(ComboBox1.Value).Cells(linha, "H").Value)) = "VENCIDO" Then
            For R = 2 To 8
            REGISTROS(LINHA2, R) = CStr(Sheets(ComboBox1.Value).Cells(linha, R).Value)
            Next R
            LINHA2 = LINHA2 + 1
        End If
    Next linha
    ListBox1.List = REGISTROS
End If
End Sub[/code~]


Rui Maciel
Colaborador
Colaborador
Mensagens: 61
Registrado em: Dom Set 02, 2012 3:00 pm

Re: Formulário "Out of range"

Mensagem por Rui Maciel »

Boa noite e obrigado Reinaldo, você é muito bom em vba, obrigado.
Só precisava de mais uma ajudinha, ou seja, através do userform pesquisar, pretendia que ao selecionar o nome na combobox (que estão na coluna 3 das folhas), a pesquisa percorresse as folhas de 1 a 12 e lançasse na listbox os meses vencidos do nome selecionado na combobox.
Agradecido grato,
RMaciel
Anexos
Contas-a-receber.7z
(112.35 KiB) Baixado 206 vezes


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Formulário "Out of range"

Mensagem por Reinaldo »

Experimente alterando a rotina "ComboBox1_Change" do Formulario <ufm_pesquisar> conforme abaixo:

Código: Selecionar todos

Private Sub ComboBox1_Change()
Dim REGISTROS(8 To 154, 2 To 8) As String
Dim linha As Long, LINHA2 As Long
Dim X As Integer, R As Integer

If Me.ComboBox1.ListIndex >= 0 Then
    ListBox1.ColumnCount = 7
    LINHA2 = 8
    For X = 1 To 12
        For linha = 9 To Sheets(X).Cells(Rows.Count, 3).End(xlUp).Row
            If UCase(CStr(Sheets(X).Cells(linha, "C").Value)) = ComboBox1.Value And UCase(CStr(Sheets(X).Cells(linha, "H").Value)) = "VENCIDO" Then
                For R = 2 To 8
                    REGISTROS(LINHA2, R) = CStr(Sheets(X).Cells(linha, R).Value)
                Next R
                LINHA2 = LINHA2 + 1
            End If
        Next linha
    Next X
    ListBox1.List = REGISTROS
End If
End Sub


Rui Maciel
Colaborador
Colaborador
Mensagens: 61
Registrado em: Dom Set 02, 2012 3:00 pm

Re: Formulário "Out of range"

Mensagem por Rui Maciel »

Muito obrigado Reinaldo, muito bom, você é mestre.
Eu estava a consolidar para uma folha e depois pesquisava, mas a forma como você implementou é muito boa.
Agradecido,
RMaciel


Rui Maciel
Colaborador
Colaborador
Mensagens: 61
Registrado em: Dom Set 02, 2012 3:00 pm

Re: [Resolvido]Formulário "Out of range"

Mensagem por Rui Maciel »

Só alterei no código o seguinte para formatar algumas colunas da listbox para moeda:

Dim REGISTROS(8 To 154, 2 To 8) As String
Dim linha As Long, LINHA2 As Long
Dim X As Integer

If Me.ComboBox1.ListIndex >= 0 Then
LINHA2 = 8
For X = 1 To 12
For linha = 9 To Sheets(X).Cells(Rows.Count, 3).End(xlUp).Row
If UCase(Sheets(X).Cells(linha, "C").Value) = ComboBox1.Value And UCase(Sheets(X).Cells(linha, "H").Value) = "VENCIDO" Then

REGISTROS(LINHA2, 2) = Sheets(X).Cells(linha, 2).Value
REGISTROS(LINHA2, 3) = Sheets(X).Cells(linha, 3).Value
REGISTROS(LINHA2, 4) = Format(Sheets(X).Cells(linha, 4).Value, "currency")
REGISTROS(LINHA2, 5) = Format(Sheets(X).Cells(linha, 5).Value, "currency")
REGISTROS(LINHA2, 6) = Sheets(X).Cells(linha, 6).Value
REGISTROS(LINHA2, 7) = Format(Sheets(X).Cells(linha, 7).Value, "currency")
REGISTROS(LINHA2, 8) = Sheets(X).Cells(linha, 8).Value

LINHA2 = LINHA2 + 1
End If
Next linha
Next X
ListBox1.List = REGISTROS
End If
End Sub

Obrigado mais uma vez.
RMaciel


Rui Maciel
Colaborador
Colaborador
Mensagens: 61
Registrado em: Dom Set 02, 2012 3:00 pm

Re: Formulário "Out of range"

Mensagem por Rui Maciel »

Bom dia
Reabri o tópico, pois, nos userform´s 1 e 4 quando pretendo saber o que cada cliente pagou ou quanto se recebeu naquele mês, não sai a informação correta, isto é, se algum cliente pagou só uma parte dos seus honorários (valor inscrito na coluna ""E") e como na coluna "H" está inscrito "Vencido", não aparece na listbox do userform. Tem forma de como solucionar, é que já pesquisei e não encontro uma hipótese para finalizar.
Grato desde já,
RMaciel
Anexos
Contas-a-receber.7z
(254.63 KiB) Baixado 212 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder