Erro de compilação ...
 
Notifications
Clear all

Erro de compilação em módulo oculto: PESQUISAR_BASE

8 Posts
2 Usuários
0 Reactions
2,476 Visualizações
(@necron)
Posts: 117
Estimable Member
Topic starter
 

Pessoal,

Antes de tudo: Meu conhecimento em VBA é BASICO

Algumas pessoas da minha empresa que utilizam a planilha que eu desenvolvi esta com um erro, mas não são todos, são só alguns! E esses alguns usam SO x64.

Erro de compilação em módulo oculto: PESQUISAR_BASE

Pesquisei aqui no fórum sobre esse erro e não tem muita coisa, e no google vi coisas sobre APIs e incompatibilidades, vi que isso pode ser um problema relacionado ao Sistema Operacional x64.

Mas meu script é tão simples! Não faço referencia a nenhuma biblioteca, nenhuma variável incomum, e esse modulo em questão possui um script amador muito básico:

Option Explicit
Private valor_pesquisado As String

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

Application.ScreenUpdating = False
On Error GoTo Errhandler

Dim ID As String
Dim Selecao As Integer
Dim PL As Long 'Primeira Linha
Dim UL As Long 'Última Linha
Dim linha As Long
Dim LinhaInicialDosProdutos As Long 'Linha onde começa os codigos de produtos no formulario

Selecao = ListBox1.ListIndex
ID = ListBox1.List(Selecao, 0)
PL = 2
UL = Sheets("BASE").Cells(Rows.Count, "B").End(xlUp).Row
LinhaInicialDosProdutos = 13

Call Liberar_Formulario
ActiveSheet.Cmd_EXCLUIR.Enabled = True


For linha = PL To UL
    If Sheets("BASE").Cells(linha, "N").Value = ID Then
            'FILIAL
            Sheets("FORMULÁRIO").Range("B6").Value = Sheets("BASE").Cells(linha, "A").Value
            'COD. CLIENTE
            Sheets("FORMULÁRIO").Range("H6").Value = Sheets("BASE").Cells(linha, "B").Value
            'ONDE?
            If Sheets("BASE").Cells(linha, "D").Value = "AREA ATUAÇÃO" Then
                Sheets("FORMULÁRIO").CheckBox1.Enabled = False
                Sheets("FORMULÁRIO").CheckBox1.Value = False
                Sheets("FORMULÁRIO").CheckBox2.Enabled = True
                Sheets("FORMULÁRIO").CheckBox2.Value = True
            Else
                Sheets("FORMULÁRIO").CheckBox1.Enabled = True
                Sheets("FORMULÁRIO").CheckBox1.Value = True
                Sheets("FORMULÁRIO").CheckBox2.Enabled = False
                Sheets("FORMULÁRIO").CheckBox2.Value = False
            End If
            'ENTREGA INICIO
            Sheets("FORMULÁRIO").Range("AS6").Value = Sheets("BASE").Cells(linha, "F").Value
            'ENTREGA FIM
            Sheets("FORMULÁRIO").Range("BA6").Value = Sheets("BASE").Cells(linha, "G").Value
            'OPERAÇÃO INICIO
            Sheets("FORMULÁRIO").Range("BI6").Value = Sheets("BASE").Cells(linha, "H").Value
            'OPERAÇÃO FIM
            Sheets("FORMULÁRIO").Range("BQ6").Value = Sheets("BASE").Cells(linha, "I").Value
            'ENTREGA 1º PEDIDO
            Sheets("FORMULÁRIO").Range("B9").Value = Sheets("BASE").Cells(linha, "J").Value
            'NOME DA CAMPANHA
            Sheets("FORMULÁRIO").Range("J9").Value = Sheets("BASE").Cells(linha, "K").Value
            'TIPO AÇÃO
            Sheets("FORMULÁRIO").Range("AT9").Value = Sheets("BASE").Cells(linha, "L").Value
            'STATUS DA PROPOSTA
            Sheets("FORMULÁRIO").Range("BA9").Value = Sheets("BASE").Cells(linha, "M").Value
            '# ID
            ActiveSheet.Unprotect "admcorporativo"
            Sheets("FORMULÁRIO").Range("BR9").Value = ID
            'COD PRODUTOS
            Sheets("FORMULÁRIO").Cells(LinhaInicialDosProdutos, "B").Value = Sheets("BASE").Cells(linha, "O").Value
            'VALOR INVESTIMENTO
            Sheets("FORMULÁRIO").Cells(LinhaInicialDosProdutos, "AG").Value = Sheets("BASE").Cells(linha, "R").Value
            '% DESCONTO NORMAL
            Sheets("FORMULÁRIO").Cells(LinhaInicialDosProdutos, "AP").Value = Sheets("BASE").Cells(linha, "S").Value
            '% DESCONTO ADICIONAL
            Sheets("FORMULÁRIO").Cells(LinhaInicialDosProdutos, "AX").Value = Sheets("BASE").Cells(linha, "T").Value
            'PREVISÃO VOLUME
            Sheets("FORMULÁRIO").Cells(LinhaInicialDosProdutos, "BM").Value = Sheets("BASE").Cells(linha, "V").Value
            'PREÇO CONSUMIDOR
            Sheets("FORMULÁRIO").Cells(LinhaInicialDosProdutos, "CH").Value = Sheets("BASE").Cells(linha, "Y").Value
            'REALIZADO VOL
            Sheets("FORMULÁRIO").Cells(LinhaInicialDosProdutos, "CN").Value = Sheets("BASE").Cells(linha, "Z").Value
            'PROXIMA LINHA DE PRODUTO
            LinhaInicialDosProdutos = LinhaInicialDosProdutos + 1
            
    End If
Next linha


    Range("B6:N6,AA6:AL6,AS6:BX6,B9:I9,AT9:AZ9").Select
    Selection.Locked = True
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 13434879
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("B2:BX2").Select

    
    'INFORMA QUE O REGISTRO FOI CARREGADO PELO BOTÃO 'PESQUISAR'
    Sheets("Parametros").Range("E26").Value = "SIM"
    
Errhandler:

Unload Me

End Sub

Private Sub ComboBox1_Change()
    Call buscar_valores
    Me.TextBox1.Value = ""
    Me.TextBox1.SetFocus
End Sub

Private Sub TextBox1_Change()
    valor_pesquisado = TextBox1.Text
    Call buscar_valores
End Sub

Private Sub UserForm_Initialize()
    Call buscar_valores
    Call PreencheCampos
End Sub

Private Sub buscar_valores()

    Application.ScreenUpdating = False
    Dim guia As Worksheet
    Dim linha As Integer
    Dim coluna As Integer
    Dim linhalistbox As Integer
    Dim valor_celula As String
    Dim conta_registros As Integer
    Set guia = ThisWorkbook.Worksheets("Temp")
    
    linha = 4
    coluna = 33
    linhalistbox = 0
    conta_registros = 0
    
    If Me.ComboBox1.Value = "A. ATUAÇÃO" Then
            coluna = 33
    End If
    
    If Me.ComboBox1.Value = "AÇÃO" Then
            coluna = 34
    End If
    
    If Me.ComboBox1.Value = "INICIO OP." Then
            coluna = 35
    End If
    
    If Me.ComboBox1.Value = "FIM OP." Then
            coluna = 36
    End If
    
    If Me.ComboBox1.Value = "TEMA DA CAMPANHA" Then
            coluna = 37
    End If
    
    If Me.ComboBox1.Value = "STATUS" Then
            coluna = 38
    End If
    
    ListBox1.Clear
    
    Application.ScreenUpdating = False
    With guia
        While .Cells(linha, coluna).Value <> Empty
            valor_celula = .Cells(linha, coluna).Value
            
            If UCase(Left(valor_celula, Len(valor_pesquisado))) = UCase(valor_pesquisado) Then
                       
                With PESQUISAR_BASE.ListBox1
                .ColumnCount = 7
                .ColumnWidths = "170;90;30;55;55;178;25"
                .AddItem
                .List(linhalistbox, 0) = guia.Cells(linha, 32)
                .List(linhalistbox, 1) = guia.Cells(linha, 33)
                .List(linhalistbox, 2) = guia.Cells(linha, 34)
                .List(linhalistbox, 3) = guia.Cells(linha, 35)
                .List(linhalistbox, 4) = guia.Cells(linha, 36)
                .List(linhalistbox, 5) = guia.Cells(linha, 37)
                .List(linhalistbox, 6) = guia.Cells(linha, 38)
                linhalistbox = linhalistbox + 1
                conta_registros = conta_registros + 1
                End With
                
            End If
            linha = linha + 1
        Wend
    End With
    
    lbl_registros = conta_registros
    
End Sub

Private Sub PreencheCampos()

    Application.ScreenUpdating = False
    Dim ws As Worksheet
    Dim coluna As Integer
    Dim linha As Integer
    Set ws = ThisWorkbook.Worksheets("Temp")
    coluna = 33
    linha = 3

    With ws
        While .Cells(linha, coluna).Value <> Empty
            Me.ComboBox1.AddItem .Cells(linha, coluna)
            coluna = coluna + 1
        Wend
    End With
    
End Sub

O codigo em questão abre a seguinte Form:

Se alguem puder dar uma luz?

Abçs

 
Postado : 26/11/2014 10:16 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Seria bom postar seu arquivo modelo!

Att

 
Postado : 26/11/2014 10:24 am
(@necron)
Posts: 117
Estimable Member
Topic starter
 

Alexandre,

Desculpa mas eu teria uma trabalho enorme para remover todas as informações ocultas e confidenciais e ainda poderei quebrar um monte de funções que fazem referencias a células de Sheets ocultas.

Felizmente consegui um PC aqui da empresa com OP x64 e descobri onde esta o erro:

"UCase" => Acho que esse comando não funciona em x64.

Li no google algo sobre ter que declarar as bibliotecas, você sabe o que é declarar bibliotecas?

 
Postado : 26/11/2014 10:56 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Verifica, se não há referência marcada como ausente, ou se oxc está registrado.
http://devonenote.com/2010/02/register- ... -x64-win7/

UCase é uma função.
http://support.microsoft.com/kb/263580/pt

Att

 
Postado : 26/11/2014 11:06 am
(@necron)
Posts: 117
Estimable Member
Topic starter
 

Encontrei uma referencia ausente:

Eu estava testando essa referencia em outro projeto onde eu iria utilizar o ListView, não lembro de ter marcado para esse projeto atual, não era nem pra esta marcada. Enfim, ao desmarca-la o meu Form funcionou!

Vou enviar ao usuário que estava com erro e ver se resolve.

 
Postado : 26/11/2014 11:17 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Creio que vai dar certo, considerando sua instalação!

Att

 
Postado : 26/11/2014 12:14 pm
(@necron)
Posts: 117
Estimable Member
Topic starter
 

Funcionou!

Desculpa não ter disponibilizado a planilha, mas alem de muitos dados confidenciais, deu vergonha mostrar meu código de milhões de linha que vocês fera do Excel faria em apenas 10 linhas! rsrs...

Vlw
Abçs

 
Postado : 26/11/2014 1:40 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Eu fico feliz que resolveu, obrigado pelo retorno!

Att

 
Postado : 26/11/2014 2:00 pm