Notifications
Clear all

RESULTADO NÃO ESPERADO MACRO SALVAR

12 Posts
2 Usuários
0 Reactions
874 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá pessoal, estou usando o código abaixo, para salvar dados do meu formulário, pois bem quando inserido os dados do serviço nas caixas (cmbSetor, cmbMIS, txtEquipamento, cmbTpSer, txtDescSer e cmbOficina) e o mesmo não necessita inserir dados lstvOrcamentos.ListItems, o resultado e a mensagem posta no final do código MsgBox "Não há dados para gravar.", vbExclamation, "Atenção". Preciso que a macro salve mesmo não tendo nada de dados lstvOrcamentos.

Private Sub btnSalvar_Click()

If Me.lstvOrcamentos.ListItems.Count > 0 Then

    For i = 1 To Me.lstvOrcamentos.ListItems.Count
        
        With ws.Range("a500000").End(xlUp)
            .Offset(1, 0) = lblNro.Caption
            .Offset(1, 1) = cmbSetor
            .Offset(1, 2) = cmbMIS
            .Offset(1, 3) = txtEquipamento
            .Offset(1, 4) = cmbTpSer
            .Offset(1, 5) = txtIDServ
            .Offset(1, 6) = txtIDETC
            .Offset(1, 7) = txtDescSer
            .Offset(1, 8) = cmbOficina
            .Offset(1, 9) = lstv.ListItems(i).Text                   'tipo de requisição
            .Offset(1, 10) = lstv.ListItems(i).ListSubItems(1)       'id do item
            .Offset(1, 11) = lstv.ListItems(i).ListSubItems(2)       'codigo
            .Offset(1, 12) = lstv.ListItems(i).ListSubItems(3)       'descrição do item
            .Offset(1, 13) = lstv.ListItems(i).ListSubItems(4)       'quantidade
            .Offset(1, 14) = lstv.ListItems(i).ListSubItems(5)       'unidade
            .Offset(1, 15) = lstv.ListItems(i).ListSubItems(6)       'custo unitario
            .Offset(1, 16) = lstv.ListItems(i).ListSubItems(7)       'custo total
            .Offset(1, 17) = lstv.ListItems(i).ListSubItems(8)       'prazo de entrega
        End With
    Next i
            
         'Atualiza o banco de dados para o frmPesquisa
         
        With Plan5.Range("a65000").End(xlUp)
            .Offset(1, 0) = cmbSetor
            .Offset(1, 1) = lblNro.Caption
            .Offset(1, 2) = txtIDServ
            .Offset(1, 3) = txtIDETC
            .Offset(1, 4) = txtDescSer
            .Offset(1, 5) = txtTotal
        End With
        
        'Limpa Controles
          lstv.ListItems.Clear
          cmbSetor = Empty
          txtEquipamento = Empty
          cmbTpSer = Empty
          txtIDServ = Empty
          txtIDETC = Empty
          txtDescSer = Empty
          cmbOficina = Empty
          txtTotal = Empty
         
          Call LimparCaixasDeTexto
          
          MsgBox "Orçamento gravado com sucesso.", vbInformation, "Orçamentos"
                
            'Desabilita botoes de alteraçao
             btnEditar.Enabled = False
             btnApagar.Enabled = False
             Me.cmbSetor.BackColor = &HC0C0C0
             Me.cmbSetor.Locked = True
             Me.cmbMIS.BackColor = &HC0C0C0
             Me.cmbMIS.Locked = True
             Me.txtEquipamento.BackColor = &HC0C0C0
             Me.txtEquipamento.Locked = True
             Me.cmbTpSer.BackColor = &HC0C0C0
             Me.cmbTpSer.Locked = True
             Me.txtIDServ.BackColor = &HC0C0C0
             Me.txtIDServ.Locked = True
             Me.txtIDETC.BackColor = &HC0C0C0
             Me.txtIDETC.Locked = True
             Me.txtDescSer.BackColor = &HC0C0C0
             Me.txtDescSer.Locked = True
             Me.cmbOficina.BackColor = &HC0C0C0
             Me.cmbOficina.Locked = True
             Me.cmbTpReq.BackColor = &HC0C0C0
             Me.cmbTpReq.Locked = True
             Me.txtIDItem.BackColor = &HC0C0C0
             Me.txtIDItem.Locked = True
             Me.txtCodigo.BackColor = &HC0C0C0
             Me.txtCodigo.Locked = True
             Me.txtDescReq.BackColor = &HC0C0C0
             Me.txtDescReq.Locked = True
             Me.txtQuantidade.BackColor = &HC0C0C0
             Me.txtQuantidade.Locked = True
             Me.txtUn.BackColor = &HC0C0C0
             Me.txtUn.Locked = True
             Me.txtCustoUnitario.BackColor = &HC0C0C0
             Me.txtCustoUnitario.Locked = True
             Me.txtCustoTotal.BackColor = &HC0C0C0
             Me.txtCustoTotal.Locked = True
             Me.cmbPrEnt.BackColor = &HC0C0C0
             Me.cmbPrEnt.Locked = True

Else
    
        MsgBox "Não há dados para gravar.", vbExclamation, "Atenção"
    
End If

End Sub

silvajmp

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/06/2014 1:40 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!!

Não testado!
Já tentou assim...?

If Me.lstvOrcamentos.ListItems.Count >= 0 Then

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/06/2014 1:43 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Alexandre, deu certo, porém não esta salvando na sheet(BCODADOS).

silvajmp

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/06/2014 2:00 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!!

Infelizmente eu não posso ver com mais atenção, mas porque não referencia a guia?

Sheets("MInhaGuia").Select

, etc..etc..etc
http://www.excel-vba.com/vba-code-2-5-worksheets.htm

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/06/2014 2:06 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Alexandre já fiz isso e não deu certo.

 With Sheets("BCODADOS").Range("a500000").End(xlUp)

silvajmp

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/06/2014 2:11 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Alexandre fiz um teste tirando o sinal de "=" esta salvando no lugar certo, porém permanece o comentário inicial.

If Me.lstvOrcamentos.ListItems.Count >= 0 Then

silvajmp

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/06/2014 2:44 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

silva_jmp

Boa Noite!

Coloque um apóstrofo (') no início da linha:

'MsgBox "Não há dados para gravar.", vbExclamation, "Atenção"

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 24/06/2014 3:06 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Wagner colocando apóstrofo (') no início da linha só tratou o bloqueio para salvar com a mensagem (MsgBox "Não há dados para gravar.", vbExclamation, "Atenção") o fato e que além disso, colocando o sinal de = na linha (If Me.lstvOrcamentos.ListItems.Count >= 0 Then), esta interferindo em salvar os dados na plan2(BCODADOS), pois fiz os testes e ficou assim:
a) Se colocar >= 0 e o preenchimento for somente os dados dos serviços e lstvOrcamento = 0 Resultado= aparece a mensagem "Orçamento gravado com sucesso" mas não salva dos dados na plan2(BCODADOS);
b) Se colocar >= 0 e o preenchimento for todos dos campos e lstvOrcamento >0 Resultado= aparece a mensagem "Orçamento gravado com sucesso" e salva os dados na plan2(BCODADOS);
c) Se colocar > 0 e o preenchimento for somente os dados dos serviços e lstvOrcamento = 0 Resultado= Não salva, não aparece nada fica os dados na tela;
d) Se colocar > 0 e o preenchimento for todos os campos e lstvOrcamento >0 Resultado= aparece a mensagem "Orçamento gravado com sucesso" e salva os dados na plan2(BCODADOS);

If Me.lstvOrcamentos.ListItems.Count >= 0 Then
        
    For i = 1 To Me.lstvOrcamentos.ListItems.Count
        With Plan2.Range("a500000").End(xlUp)
            .Offset(1, 0) = lblNro.Caption
            .Offset(1, 1) = cmbSetor
            .Offset(1, 2) = cmbMIS
            .Offset(1, 3) = txtEquipamento
            .Offset(1, 4) = cmbTpSer
            .Offset(1, 5) = txtIDServ
            .Offset(1, 6) = txtIDETC
            .Offset(1, 7) = txtDescSer
            .Offset(1, 8) = cmbOficina
            .Offset(1, 9) = lstv.ListItems(i).Text                   'tipo de requisição
            .Offset(1, 10) = lstv.ListItems(i).ListSubItems(1)       'id do item
            .Offset(1, 11) = lstv.ListItems(i).ListSubItems(2)       'codigo
            .Offset(1, 12) = lstv.ListItems(i).ListSubItems(3)       'descrição do item
            .Offset(1, 13) = lstv.ListItems(i).ListSubItems(4)       'quantidade
            .Offset(1, 14) = lstv.ListItems(i).ListSubItems(5)       'unidade
            .Offset(1, 15) = lstv.ListItems(i).ListSubItems(6)       'custo unitario
            .Offset(1, 16) = lstv.ListItems(i).ListSubItems(7)       'custo total
            .Offset(1, 17) = lstv.ListItems(i).ListSubItems(8)       'prazo de entrega
        End With
    Next i

silvajmp
http://www.4shared.com/file/y1T9XhzZce/FRM_R2_2406.html

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/06/2014 5:59 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Como faço para carregar dados nesse listview?

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 24/06/2014 6:42 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Wagner depois dos preenchimentos das caixas (cmbTpReq, txtIDItem, txtCodigo, txtDescReq, txtQuantidade, txtUn, txtCustoUnitario, txtCustoTotal e cmbPrEnt) aciono o botão btnInserir:

Private Sub btnInserir_Click()

 If cmbTpReq <> Empty And txtIDItem <> Empty And txtCodigo <> Empty And txtDescReq <> Empty _
 And txtQuantidade <> Empty And txtCustoUnitario <> Empty And txtCustoTotal <> Empty And cmbPrEnt <> Empty Then
  
        With Me.lstvOrcamentos 'Listview
            .ListItems.Add 1, , Me.cmbTpReq.Value 'tipo de requisição
            .ListItems(1).ListSubItems.Add 1, , UCase(Me.txtIDItem) 'id do item
            .ListItems(1).ListSubItems.Add 2, , Me.txtCodigo 'codigo
            .ListItems(1).ListSubItems.Add 3, , UCase(Me.txtDescReq) 'descrição
            .ListItems(1).ListSubItems.Add 4, , Format(Me.txtQuantidade, "0.00") 'quantidade
            .ListItems(1).ListSubItems.Add 5, , UCase(Me.txtUn) 'unidade
            .ListItems(1).ListSubItems.Add 6, , Format(Me.txtCustoUnitario, "Currency") 'valor unitario
            .ListItems(1).ListSubItems.Add 7, , Format(Me.txtCustoTotal, "Currency") 'valor total
            .ListItems(1).ListSubItems.Add 8, , Format(Me.cmbPrEnt) 'prazo de entrega
        
        End With
   
       Call LimparCaixasDeTexto
        
        If Me.lstvOrcamentos.ListItems.Count >= 1 Then
        
            btnEditar.Enabled = True
            btnApagar.Enabled = True
        End If
 End If
 Call BtnConcat
 
   txtIDItem.Text = txtIDServ.Text & "-" & Me.lstvOrcamentos.ListItems.Count + 1
 Call SomarItens
           
End Sub

silvajmp

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/06/2014 6:53 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

OK.

Acho que é assim.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 24/06/2014 8:37 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Wagner obrigado novamente, deu certo.

silvajmp

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/06/2014 9:34 pm