Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#31931
Bom dia

Tenho como rotina do "frm_consulta" uma pesquisa multicritério na sheets("Dados"), que deverá ser feita com uns de seus txtbox preenchidos (txt_empresa, txt_periodo a txt_periodo1, txt_mva a txt_mva1); a pesquisa feita na sheets ("dados") deve ser levada para a sheets("Estoque") de onde alimentará o listbox1... toda essa rotina está associada ao evento click do btn_pesquisar do frm_consulta.

Porém, só está sendo transportado os 3 primeiros dados que eram dados já existentes antes de realizar a compilação do código; preciso que sempre que fosse feito a inserção de novos dados na sheets("Dados") e o btn_pesquisar do frm_consulta fosse ativada essa pesquisa, realizada com os novos dados cadastrados anteriormente.

babdallas no fórum: viewtopic.php?f=12&t=6618&p=31805#p31805 anteriormente ajudou a implementar está rotina de pesquisa, porém, quando baixei a implementação que fizeste em meu código, o teste que fiz, o fiz com os cadastros que já haviam (os três primeiros), todavia conforme vou alimentando a sheets("dados") com o "frm_estoque" o filtro não é mais realizado para todos os itens, isto é, está funcionando apenas para os registros que já haviam. :(

Alguém puder contribuir! pois não consegui fazer nada que corrigisse ó cód. para rodar após a inserção de novos dados.


Código: Selecionar todos
Private Sub btn_pesquisar_Click()


Dim lindados As Integer
Dim linestoque As Integer
Dim lngUltLin As Long
Dim vrtMvaInf As Variant, vrtMvaSup As Variant, vrtPerInf As Variant, vrtPerSup As Variant

Application.ScreenUpdating = False

On Error GoTo Erro
lindados = 2
linestoque = 2

With wshEstoque
    lngUltLin = .Cells(.Rows.Count, 1).End(xlUp).Row
    If lngUltLin >= linestoque Then .Range(.Cells(linestoque, 1), .Cells(lngUltLin, 11)).ClearContents
End With

vrtPerInf = CDate(IIf(txt_periodo.Value = "", 0, txt_periodo.Value))
vrtPerSup = CDate(IIf(txt_periodo1.Value = "", 1000000, txt_periodo1.Value))
vrtMvaInf = IIf(txt_mva.Value = "", -1E+20, txt_mva.Value) / 100
vrtMvaSup = IIf(txt_mva1.Value = "", 1E+20, txt_mva1.Value) / 100

With wshDados
    Do Until .Cells(lindados, 2).Value2 = ""
        If UCase(.Cells(lindados, 3).Value2) Like "*" & UCase(txt_empresa.Value) & "*" And _
        .Cells(lindados, 2).Value2 >= vrtPerInf And _
        .Cells(lindados, 2).Value2 <= vrtPerSup And _
        .Cells(lindados, 8).Value2 >= CDbl(vrtMvaInf) And _
        .Cells(lindados, 8).Value2 <= CDbl(vrtMvaSup) Then
            For intCol = 1 To 11
                wshEstoque.Cells(linestoque, intCol) = .Cells(lindados, intCol)
            Next intCol
        
            linestoque = linestoque + 1
        End If
        
        lindados = lindados + 1
    Loop
    wshEstoque.Activate
End With


Call carregarlistbox



Application.ScreenUpdating = True

Erro:
Application.ScreenUpdating = True
End 



Em anexo planilha

Muito obrigado!
Você não está autorizado a ver ou baixar esse anexo.
#32074
O percentual estava como texto. Mudei isso na macro de gravar dados e agora está funcionando.
Você não está autorizado a ver ou baixar esse anexo.
#32106
babdallas ..

não tinha percebido também :mrgreen:

Para minha necessidade neste cálculo deixei assim:
Código: Selecionar todos
sv1 = CDbl(.Cells(lngUltLinDados + 1, 6).Value2) + CDbl(.Cells(lngUltLinDados + 1, 7).Value2)
        sv2 = CDbl(.Cells(lngUltLinDados + 1, 4).Value2) + CDbl(.Cells(lngUltLinDados + 1, 5).Value2)
        resultado = (sv1 - sv2) / .Cells(lngUltLinDados + 1, 7).Value2
        
        .Cells(lngUltLinDados + 1, 8).Value = resultado
        .Cells(lngUltLinDados + 1, 8).NumberFormat = "0.00%"
Ficou ótimo, meu filtro para sheets("esotque") está rodando legal, porém o txt_resultado.Value não exibi mas em formato "0.00%"
Código: Selecionar todos
 txt_resultado.Value = .Cells(lngUltLinDados + 1, 8).Value
        
               
        MsgBox ("Resultado MVA% = " & .Cells(lngUltLinDados + 1, 8).Value & " , STATUS: " & .Cells(lngUltLinDados + 1, 9).Value & "")
Você não está autorizado a ver ou baixar esse anexo.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord