locked
Criar funcao dentro de macro RRS feed

  • Pergunta

  • Ola,

    Tenho a seguinte macro (abaixo).
    Como vcs podem ver, eu repito muito os comandos
    If ((wksSheet.Range("D" & row).Value = "X")) Then
                        'Insert the name in the active cell and then increment the row
                        ActiveCell.Value = wksSheet.Range("A" & row).Value
                        ActiveCell.Offset(0, 1).Select
                        ActiveCell.Value = wksSheet.Range("D" & row).Value
                        ActiveCell.Offset(0, 1).Select
                        ActiveCell.Value = "casado"
                        ActiveCell.Offset(1, -2).Select
                        i = i + 1
    Por isto, eu gostaria de criar uma funcao onde eu desse como argumentos o nome da coluna (A, B, C etc.), a linha (variavel row) e o valor q eu quero procurar (no caso X, mas eu quero algo q possa ser flexivel, tipo uma variavel).
    Eh possivel criar esse tipo de funcao? Alguem pode me ajudar?

    Desde ja agradeco,

    Fernanda

    Code Snippet
    Sub Selectionner()
      Dim wksSheet As Worksheet
      Dim i As Integer
      Dim row As Integer
      Dim Lin As Integer
      For Each wksSheet In ThisWorkbook.Worksheets
        'Use an another sheet to search
        row = 2
        Do
            If (wksSheet.Name <> ActiveSheet.Name) Then
                If ((wksSheet.Range("A" & row).Value = "paulo")) Then
                    If ((wksSheet.Range("D" & row).Value = "X")) Then
                        'Insert the name in the active cell and then increment the row
                        ActiveCell.Value = wksSheet.Range("A" & row).Value
                        ActiveCell.Offset(0, 1).Select
                        ActiveCell.Value = wksSheet.Range("D" & row).Value
                        ActiveCell.Offset(0, 1).Select
                        ActiveCell.Value = "casado"
                        ActiveCell.Offset(1, -2).Select
                        i = i + 1
                    End If
                    If ((wksSheet.Range("E" & row).Value = "X")) Then
                        'Insert the name in the active cell and then increment the row
                        ActiveCell.Value = wksSheet.Range("A" & row).Value
                        ActiveCell.Offset(0, 1).Select
                        ActiveCell.Value = wksSheet.Range("E" & row).Value
                        ActiveCell.Offset(0, 1).Select
                        ActiveCell.Value = "casado"
                        ActiveCell.Offset(1, -2).Select
                        i = i + 1
                    End If
            End If
            row = row + 1
        Loop Until row = 8
      Next wksSheet
      'Fonction to count the number of rows
      Lin = Sheets("1").Range("A65000").End(xlUp).row
      MsgBox "There were " & i & " results", vbOKCancel, "Found results"
    End Sub
    segunda-feira, 18 de junho de 2007 14:52

Todas as Respostas

  • Olá fernanda, me responda as seguintes pergutnas?

    Como você vai querer os resultados, exemplo vc quer a linha ou coluna, ou quantos ocorrencias foram encontradas?

    E vai querer buscar somente na sheet atual, ou em várias?

    Aguardo resposta.

    segunda-feira, 18 de junho de 2007 21:20
  • Ola Ricardo,

    Na realidade, eu quero os campos localizados (no caso, eu procuro 2 valores contidos em celulas q pertencem a mesma linha) e o numero de ocorrencias encontradas tambem (o contador i serve pra depois eu mostrar na caixa de dialogo o numero de ocorrencias).
    E eu estou procurando em todas as planilhas do arquivo (por isto a razao do For .... Next ...).
    A minha planilha de pesquisa eh diferente das planilhas onde os dados estao contidos. Eu coloco os 2 criterios de pesquisa (no caso do exemplo: "paulo" e "X"), mostro os resultados encontrados ("paulo" e "X") e depois, eu vou acrescentar um link pro local onde o dado foi encontrado.
    Falando nisso... Pro link, eu estou utilisando a funcao SubAddress "nome da planilha!nome da celula". Mas essa funcao nao funciona pra todas as planilhas. Dependendo do nome da planilha, a funcao nao funciona e me da um erro como "Reference is not valid!". Vc sabe se esta funcao tem alguma restricao?

    Desde ja agradeco,

    Fernanda
    terça-feira, 19 de junho de 2007 07:55