Ir ao conteúdo

Posts recomendados

Postado

Sinto em dizer isso, mas o Formulário (userform), criado no Excel Win, não roda no Excel Mac. Então terá que criar um novo Formulário com todos os controles, textbox, label, botões e etc e para aproveitar o mesmo código, terá que renomear os controles de acordo com o que está no formulário Excel/Win, assim não precisará fazer alterações no codigo.

  • Curtir 1
Postado

Então se eu criar um novo formulário, posso simplesmente copiar o código? E no caso do botão "localizar"ao lado da planilha? Posso inserir também? Obrigada

 

E desde já muito obrigada. 

Postado

Sim poderá aproveitar o codigo, talvez tenha alguma diferenças que envolve os codigos de cores do MAC, mas pode ser substituidos. Seria bom se pudesse abrir este formulario no Win, para 'pegar' as informações dos nomes dos controles para depois voce ter esses dados quando for criar no Mac.

 

7 minutos atrás, kika.gunesim disse:

 E no caso do botão "localizar"ao lado da planilha? Posso inserir também?

 

Não entendi que botão é esse. 

 

 

  • Curtir 1
Postado

Desculpe @kika.gunesim desconsidere minhas mensagens anteriores ....

 

Eu fiz um teste aqui no Mac e rodou, o unico problema que apresentou ate agora foi no comando de pesquisa. Mas até ja resolvi agora.

 

image.png.0c558f71a20efd68a1d26b7dac239de6.png

 

*O motivo das minhas afirmacoes anterirores, é que teve um outro caso que tive que criar um novo Userform, pois o Mac naó deixava nem abrir no vbe.

 

O erro que apresentou aqui pra mim foi na pesquisa.

 

No Sub Multipla_Pesquisa

Altere a linha Set aCell = .Columns(X).Find(oq_

                                          Lookin:= ....

 

por esta: 

 

Set aCell = .Columns(X).Find(o que, _
            Lookin:=xlvalues, LookAt:=xlPart)

Set aCell = .Columns(X).Find(o que, _
            Lookin:=xlvalues, LookAt:=xlPart)

 

 

adicionado 20 minutos depois
1 hora atrás, kika.gunesim disse:

há como acessar o formulário. E se crio um botão pra acessar o formulário, aparece o erro 1004 (tempo de execução). Estou usando essa planilha do Basole, logo acima ( a última que ele postou).

 

Insira um novo Módulo, e neste modulo coloque a macro para abrir o Form.

 

Sub Abrir_Form()

   frmDemandasInternas.Show

End Sub

Click com o botão direito do mouse sobre o botão e selecione Atribuir Macro, e selecione:  Abrir_Form

  • Curtir 1
Postado

Muito obrigada por retornar.

Editei o código e aparece o erro de arquivo nomeado não encontrado (erro 442).

O código ficou assim:

 

    With ws1            

Set aCell = .Columns(X).Find(What:=o que, _                        

LookIn:=xlValues, LookAt:=xlPart, _          

SearchOrder:=xlValues, SearchDirection:=xlNext, _                        

MatchCase:=False, SearchFormat:=False)

 

Help! 

 

P.S.:

O botão para abrir o formulário deu certo. 

Obrigada. 

Postado

Desculpe, mas acho que não entendeu. Tem que substituir toda a linha:

 

Set aCell = .Columns(X).Find(What:=o que, _
                        LookIn:=xlValues, LookAt:=xlPart, _
                        SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                        MatchCase:=False, SearchFormat:=False)

 

Por Esta: 

 

Set aCell = .Columns(X).Find(What:=o que, _
                        LookIn:=xlValues, LookAt:=xlPart)

 

image.png.d2356158f9610ad853a60f251942638f.png

 

E tambem o corretor ortográfico aqui do forum, ele altera algumas coisa do código, que postamos aqui

Por exemplo:o que o correto é a letra O junto com a letra q. Não dá em pra por junto as letras, que ele altera, após salvar o post

 

 

  • Curtir 1
Postado

Ah entendi! Agora sim funcionou.

Preciso de um favor seu:

 

If txtID.Value = "" Then MsgBox "Insira o codigo", 64, "Atencao": Exit Sub

 

Na Linha acima, eu observo que é preciso saber o código para fazer a pesquisa.

É possível fazer a pesquisa combinando dados de outras colunas, por exemplo nome do responsável ou área solicitada?

 

Outra questão:

As macros dos comandos "fechar"e "cancelar" também aprecem com erros, pois não

reconhecem as variáveis. Poderia me ajudar por favor nisso também?

 

Private Sub cmdFechar_Click() Unload Me frmMenu.Show End Sub

 

E desde já, muito obrigada. Você está salvando a minha vida aqui na empresa.

Obrigada mesmo.

Postado

Neste modelo você pode pesquisar em qualquer campo, mas tem que digitar o termo no campo correto e com essas alterações abaixo no botão de pesquisa: 

 

Substitua o código do botão "Pesquisar Registro" por este:

Private Sub btnPesquisar_Click()
    Dim lngRow As Long
    Dim X As Long, y As Long: y = 0
    Dim o que As String
    
    If Me.txtID.Text <> "" Then X = 1: o que = Me.txtID.Text: GoTo Px
    If Me.txtSolicitante.Text <> "" Then X = 3: o que = Me.txtSolicitante.Text: GoTo Px
    If Me.txtREQ.Text <> "" Then X = 4: o que = Me.txtREQ.Text: GoTo Px
    If Me.cboComplexidade.Text <> "" Then X = 5: o que = Me.cboComplexidade.Text: GoTo Px
    If Me.cboTI.Text <> "" Then X = 7: o que = Me.cboTI.Text: GoTo Px
    If Me.txtResponsavel.Text <> "" Then X = 9: o que = Me.txtResponsavel.Text: GoTo Px
    If Me.cboStatus.Text <> "" Then X = 10: o que = Me.cboStatus.Text: GoTo Px
Px:
    
    With ThisWorkbook.Worksheets("Demandas Internas")
    
        lngRow = fMatch(o que, .Columns(X))
        If lngRow = 0 Then
            MsgBox "Dados não encontrados!", vbCritical
        Else
            Call Multipla_Pesquisa
            
            Call HabilitaControles
            
        End If
    End With
End Sub

* Substitua no codigo o que for "o que" pela letra O + a letra q pois o corretor alterou tudo 

 

Conforme a imagem:

image.png.fc20e47889e125727b7055499ceb141b.png

 

No botão "Cancelar", pra mim aqui está ok. Já o "fechar" mantenha somente o unload me , pois não existe neste modelo o userform frmMenu, por isso o erro. 

 

Private Sub cmdFechar_Click()
    
      Unload Me
    
End Sub

 

  • Obrigado 1
Postado

Olá pessoal! 

Tudo bem?

Obrigada por toda a ajuda até aqui. 

Tenho uma dúvida: é possivel fazer uma pesquisa no excel com a inserção de mais de uma variável para a pesquisa?

Como por exemplo: pesquisar por data, evento e local ao mesmo tempo? Existe alguma forma de deixar a busca mais intuitiva (por exemplo se o usuario digita um espaço a mais entre duas palavras ou inverte uma letra? 

Agradeço desde já por tudo. 

 

P.S.: @Basole estou usando a sua planilha como base e também os códigos que você me enviou. 

Postado
23 horas atrás, kika.gunesim disse:

..é possivel fazer uma pesquisa no excel com a inserção de mais de uma variável para a pesquisa?

Como por exemplo: pesquisar por data, evento e local ao mesmo tempo?

 

Sim, fazer pesquisa com a inserção de mais de uma variável em toda a aba, já é algo mais simples:

 

1º Insira + um textbox para inserir os termos de pesquisa.

2º renomeei para txtPesquisa  

 

image.png.1b0bfe7b2cf1096c47e3e03040f81da2.png

 

A macro vai entender que os espaços é o que separa, os termos que deverão ser pesquisados 

image.png.b86b9fbf0374fc60427caceceb3e90d4.png

 

3º substitua o código abaixo do botão pesquisar

Private Sub btnPesquisar_Click()
    Dim r As Range
    Dim O_Q()  As String
    Dim arrLB  As Variant
    Dim i      As Integer
    Dim ws1    As Worksheet
    
    O_Q() = VBA.Split(Me.txtPesquisa.Text)
    
    ReDim arrLB(0, 11)
    
    Set ws1 = Plan16
    
    With Me.ListBox1
        .ColumnCount = 11
        .ColumnWidths = "30;40;50;40;80;50;70;70;70;70;70"
        .List = arrLB
        .Clear
        
        For i = LBound(O_Q) To UBound(O_Q)
            
            If VBA.IsDate(O_Q(i)) Then
            Set r = FindAll(VBA.CDate(O_Q(i)))
            Else
            Set r = FindAll(O_Q(i))
            End If
            
            If Not r Is Nothing Then
                
                .AddItem
                .List(.ListCount - 1, 0) = ws1.Range("A" & r.Row).Value
                .List(.ListCount - 1, 1) = ws1.Range("B" & r.Row).Value
                .List(.ListCount - 1, 2) = ws1.Range("C" & r.Row).Value
                .List(.ListCount - 1, 3) = ws1.Range("D" & r.Row).Value
                .List(.ListCount - 1, 4) = ws1.Range("E" & r.Row).Value
                .List(.ListCount - 1, 5) = ws1.Range("F" & r.Row).Value
                .List(.ListCount - 1, 6) = ws1.Range("G" & r.Row).Value
                .List(.ListCount - 1, 7) = ws1.Range("H" & r.Row).Value
                .List(.ListCount - 1, 8) = ws1.Range("I" & r.Row).Value
                .List(.ListCount - 1, 9) = ws1.Range("J" & r.Row).Value
                .List(.ListCount - 1, 10) = ws1.Range("K" & r.Row).Value
                
            End If
        Next i
        
    End With
    
    Call HabilitaControles
    
End Sub

 

4º E em um modulo, cole a função FindAll: (*esta função é que faz a pesquisa em toda as celulas na aba)  

Function FindAll(what, Optional SearchWhat As Variant, _
    Optional LookIn, _
    Optional LookAt, _
    Optional SearchOrder, _
    Optional SearchDirection As XlSearchDirection = xlNext, _
    Optional MatchCase As Boolean = False, _
    Optional MatchByte, _
    Optional SearchFormat) As Range
    
    Dim aRng As Range
    
    If IsMissing(SearchWhat) Then
        
        On Error Resume Next
        
        Set aRng = ActiveSheet.UsedRange
        
        On Error GoTo 0
        
        ElseIf TypeOf SearchWhat Is Range Then
        
        If SearchWhat.Cells.Count = 1 Then
            
            Set aRng = SearchWhat.Parent.UsedRange
            
        Else
            
            Set aRng = SearchWhat
            
        End If
        
        ElseIf TypeOf SearchWhat Is Worksheet Then
        
        Set aRng = SearchWhat.UsedRange
        
    Else
        
        Exit Function                       '*****
        
    End If
    
    If aRng Is Nothing Then Exit Function   '*****
    
    Dim FirstCell As Range, CurrCell As Range
    
    With aRng.Areas(aRng.Areas.Count)
        
        Set FirstCell = .Cells(.Cells.Count)
        
    End With
    
    Set FirstCell = aRng.Find(what:=what, After:=FirstCell, _
    LookIn:=LookIn, LookAt:=LookAt, _
    SearchDirection:=SearchDirection, MatchCase:=MatchCase, _
    MatchByte:=MatchByte, SearchFormat:=SearchFormat)
    
    If FirstCell Is Nothing Then Exit Function          '*****
    
    Set CurrCell = FirstCell
    
    Set FindAll = CurrCell
    
    Do
        
        Set FindAll = Application.Union(FindAll, CurrCell)
        
        Set CurrCell = aRng.Find(what:=what, After:=CurrCell, _
        LookIn:=LookIn, LookAt:=LookAt, _
        SearchDirection:=SearchDirection, MatchCase:=MatchCase, _
        MatchByte:=MatchByte, SearchFormat:=SearchFormat)
        
        Loop Until CurrCell.Address = FirstCell.Address
        
End Function

 

23 horas atrás, kika.gunesim disse:

Existe alguma forma de deixar a busca mais intuitiva (por exemplo se o usuario digita um espaço a mais entre duas palavras ou inverte uma letra? 

 

Até é possível, mas já é mais complicado para atender esta demanda, pois tem que criar muitas condições e fazer tipo uma pesquisa em um banco de palavras para comparar o que foi digitado e fazer a correção.

 

 

 

 

  • mês depois...
  • 2 anos depois...
Postado
Em 22/02/2016 às 17:54, CasaDoHardware disse:

E so alterar a coluna pela qual deseja pesquisar.

 

O ideal é fazer uma rotina para cada campo ou colocar uma combox que indique a coluna da pesquisa.

como crio essa rotina para cada campo??

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!