Notifications
Clear all

Combobox Encadeados....Problema ao inserir na planilha...

3 Posts
1 Usuários
0 Reactions
2,702 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá galera, to precisando de um help aqui no vba.
O esquema é o seguinte:

Tenho dois combobox encadeados no seguinte código:

Private Sub ComboBox3_change()

Call CarregaSITE(Me.ComboBox3.List(Me.ComboBox3.ListIndex)) ' local do erro

End Sub

Private Sub UserForm_initialize()

Call CarregaOS

End Sub

Private Sub CarregaOS()

Dim linha As Long, coluna As Long
linha = 2
coluna = 1
Me.ComboBox3.Clear
Do While Not IsEmpty(Plan4.Cells(linha, coluna))
Me.ComboBox3.AddItem Plan4.Cells(linha, coluna).Value
linha = linha + 1
Loop
End Sub

Private Sub CarregaSITE(ByVal Os As String)

Dim linha As Long, colunaSITE As Long, colunaOS As Integer
linha = 2
colunaSITE = 6
colunaOS = 1
Me.ComboBox7.Clear
Do While Not IsEmpty(Plan4.Cells(linha, colunaSITE))
If Plan4.Cells(linha, colunaOS).Value = Os Then
Me.ComboBox7.AddItem Plan4.Cells(linha, colunaSITE).Value
End If
linha = linha + 1
Loop
End Sub

o código de inserir na planilha também esta pronto e localizado em um comandbutton

O erro ocorre na linha "Call CarregaSITE(Me.ComboBox3.List(Me.ComboBox3.ListIndex))" dizendo que 'não é possível carregar a propriedade list. Índice de matriz de propriedade inválido'

Alguém poderia me ajudar com essa encrenca ?

Agradeço a todos.

 
Postado : 19/02/2010 2:02 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Lucas, o erro ocorre porque o evento change do combo é executado logo na inicialização do form quando na rotina CarregaOS a linha 'Combobox3.clear' limpa todos os itens do combo.
Dai quando isso acontece, o change é automaticamente executado. e por isso da erro de item na matriz é invalido.
A solução é fazer o seguinte: antes de rodar a chamada 'Call CarregaSITE(Me.ComboBox3.List(Me.ComboBox3.ListIndex))' verifique se o valor de listindex é diferente de -1
se for -1 significa que não ha nada na combo.
o codigo modificado ficaria assim

Private Sub ComboBox3_change()

If Me.ComboBox3.ListIndex <> - 1 Then
Call CarregaSITE(Me.ComboBox3.List(Me.ComboBox3.ListIndex)) ' local do erro
End If


End Sub

 
Postado : 20/02/2010 9:06 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Muito obrigado meu amigo!
Deu certinho!
Abraço!

 
Postado : 22/02/2010 10:13 am