Notifications
Clear all

RETORNO DBLCLICK DO LISTVIEW ERRO '9'

7 Posts
2 Usuários
0 Reactions
843 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá pessoal, criei um listview para pesquisa e selecionar o item e com duplo clique busca os dados selecionado na plan2 e retorna os dados para formulario de cadastro para alteração, mas quando clico duas vezes esta aparecendo a mensagem (Erro em tempo de execução '9': Subscrito fora do intervalo) depurando esta destacando a linha For i = 2 To Worksheets("plan2").UsedRange.Rows.Count

Private Sub lstv_DblClick()

    frmOrcamento.lstv.ListItems.Clear
    For i = 2 To Worksheets("plan2").UsedRange.Rows.Count
        If Plan2.Cells(i, 1) = Me.lstv.SelectedItem.ListSubItems(1) And _
        Plan2.Cells(i, 2) = Me.lstv.SelectedItem.ListSubItems(2) Then
                  
          With frmOrcamento
            .lblNro = Plan2.Cells(i, 1)
            .cmbSetor = Plan2.Cells(i, 2)
            .cmbMIS = Plan2.Cells(i, 3)
            .txtEquipamento = Plan2.Cells(i, 4)
            .cmbTpSer = Plan2.Cells(i, 5)
            .txtIDServ = Plan2.Cells(i, 6)
            .txtIDETC = Plan2.Cells(i, 7)
            .txtDescSer = Plan2.Cells(i, 8)
            .cmbOficina = Plan2.Cells(i, 9)
            .cmbTpReq = Plan2.Cells(i, 10)
            .txtIDItem = Plan2.Cells(i, 11)
            .lstv.ListItems.Add 1, , Plan2.Cells(i, 12) 'codigo
            .lstv.ListItems(1).ListSubItems.Add 1, , Plan2.Cells(i, 13) 'descrição
            .lstv.ListItems(1).ListSubItems.Add 2, , Format(Plan2.Cells(i, 14), "0.00") 'quantidade
            .lstv.ListItems(1).ListSubItems.Add 3, , Plan2.Cells(i, 15) 'unidade
            .lstv.ListItems(1).ListSubItems.Add 4, , Format(Plan2.Cells(i, 16), "currency") 'valor unitario
            .lstv.ListItems(1).ListSubItems.Add 5, , Format(Plan2.Cells(i, 17), "currency") 'valor total
            .lstv.ListItems(1).ListSubItems.Add 6, , Plan2.Cells(i, 18) 'prazo de entrega
            
                       
            .btnEditar.Enabled = True
            .btnApagar.Enabled = True
          End With
        End If
    Next
    
   ' Unload Me
    Me.Hide
    
End Sub

Private Sub lstv_KeyPress(KeyAscii As Integer)
    lstv_DblClick
End Sub

silvajmp

 
Postado : 24/06/2014 9:44 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Use assim:

For i = 2 To Worksheets("BCODADOS").UsedRange.Rows.Count
 
Postado : 24/06/2014 9:59 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Wagner não deu mais o erro, porém na esta trazendo os dados conforme referencia selecionada no lstv(pesquisa), até achei que fosse por esta bloqueadas (locked), mas não e isso eu acho, pois fiz call habilitar mas não adiantou.

Private Sub lstv_DblClick()
    Call habilitar
    frmOrcamento.lstv.ListItems.Clear
    For i = 2 To Worksheets("BCODADOS").UsedRange.Rows.Count
        If Plan2.Cells(i, 1) = Me.lstv.SelectedItem.ListSubItems(1) And _
        Plan2.Cells(i, 2) = Me.lstv.SelectedItem.ListSubItems(2) Then
           
          With frmOrcamento
            .lblNro = Plan2.Cells(i, 1)
            .cmbSetor = Plan2.Cells(i, 2)
            .cmbMIS = Plan2.Cells(i, 3)
            .txtEquipamento = Plan2.Cells(i, 4)
            .cmbTpSer = Plan2.Cells(i, 5)
            .txtIDServ = Plan2.Cells(i, 6)
            .txtIDETC = Plan2.Cells(i, 7)
            .txtDescSer = Plan2.Cells(i, 8)
            .cmbOficina = Plan2.Cells(i, 9)
            .cmbTpReq = Plan2.Cells(i, 10)
            .txtIDItem = Plan2.Cells(i, 11)
            .lstv.ListItems.Add 1, , Plan2.Cells(i, 12) 'codigo
            .lstv.ListItems(1).ListSubItems.Add 1, , Plan2.Cells(i, 13) 'descrição
            .lstv.ListItems(1).ListSubItems.Add 2, , Format(Plan2.Cells(i, 14), "0.00") 'quantidade
            .lstv.ListItems(1).ListSubItems.Add 3, , Plan2.Cells(i, 15) 'unidade
            .lstv.ListItems(1).ListSubItems.Add 4, , Format(Plan2.Cells(i, 16), "currency") 'valor unitario
            .lstv.ListItems(1).ListSubItems.Add 5, , Format(Plan2.Cells(i, 17), "currency") 'valor total
            .lstv.ListItems(1).ListSubItems.Add 6, , Plan2.Cells(i, 18) 'prazo de entrega
      
            .btnEditar.Enabled = True
            .btnApagar.Enabled = True
          End With
        End If
    Next
    
   ' Unload Me
    Me.Hide
    
End Sub
Private Sub lstv_KeyPress(KeyAscii As Integer)
    lstv_DblClick
End Sub

Sub habilitar()
 'Habilita botoes de alteraçao
             frmOrcamento.cmbSetor.BackColor = &HFFFFFF
             frmOrcamento.cmbSetor.Locked = False
             frmOrcamento.cmbMIS.BackColor = &HFFFFFF
             frmOrcamento.cmbMIS.Locked = False
             frmOrcamento.txtEquipamento.BackColor = &HFFFFFF
             frmOrcamento.txtEquipamento.Locked = False
             frmOrcamento.cmbTpSer.BackColor = &HFFFFFF
             frmOrcamento.cmbTpSer.Locked = False
             frmOrcamento.txtDescSer.BackColor = &HFFFFFF
             frmOrcamento.txtDescSer.Locked = False
             frmOrcamento.cmbOficina.BackColor = &HFFFFFF
             frmOrcamento.cmbOficina.Locked = False
             frmOrcamento.chkIdETC.Locked = False
             frmOrcamento.chkReq.Locked = False
            
End Sub

silvajmp
http://www.4shared.com/file/z4GVIsLFba/FRM_R2_2406__1_.html

 
Postado : 24/06/2014 10:45 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Mas já estava funcionando antes? Porque não fiz nada nesse código!

Faça o seguinte: coloque o cursor na linha Call Habilitar (primeira linha após o SUB), pressione F9. Isso fará o VBA colocar um break point nessa linha (ela ficará destacada na cor marrom). Agora execute normalmente os procedimentos que levarão à carga dos dados. Quando chegar na linha do break point, o VBA interromperá a execução e destacará a linha também com o fundo na cor amarela. Agora você pode ir executando seu código linha a linha, pressionando F8 a cada linha, e ver o que é que está acontecendo na execução. Nas linhas onde tiver variáveis ou objetos, colocando o cursor em cima, você pode ver os valores armazenados em cada um.

 
Postado : 25/06/2014 4:25 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Só não faço agora porque estou respondendo do celular. Estou longe do micro.

 
Postado : 25/06/2014 5:37 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Wagner bom dia, fiz o procedimento, mas não consigo analisar onde esta o problema, pelo pouco conhecimento em vba, não consigo achar o erro da lógica.

silvajmp

 
Postado : 25/06/2014 6:27 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Silva,

Para mim é muito mais difícil executar o procedimento pois eu não sei como é a lógica do seu processo.

Por Exemplo: como é que eu faço para disparar esse código? qual é o objeto que precisa ser carregado para que o código seja disparado?

Quero registrar que cada alteração que se faz (sem conhecer o processo como um todo) pode gerar vários erros em outras partes do código, pois quando se programa orientado a eventos, uns dependem dos outros.

Seu código já está um monstrinho bem complexo (quase de 7 cabeças)! Desse modo, sugiro que você estude bastante o VBA pois se vai passar a depender dele, é necessário conhecê-lo muito bem. Do contrário, terá muitos problemas. Uma coisa que está funcionando normalmente hoje pode, por qualquer razão, não funcionar mais amanhã.

 
Postado : 25/06/2014 9:58 am