Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
deejaywesley

[Resolvido] VBA ( & linha )

Recommended Posts

Boa Tarde Galera!

Um dos Feras em VBA ai pode me ajudar com essa?

vejamos a linha!

Range("C" & linha).Value = Application.WorksheetFunction.Index(Range("F4:F12").Value, Application.Match([A1&B1], [D4:D12&E4:E12], 0))

ela está funcionando beleza, so que nessa parte [A1&B1]

eu preciso de colocar um & linha so que de todo jeito que faço nao funciona!

Match(["A"& linha&"B"& linha],

Match([("A"& linha)&("B"& linha)],

Match("[A&B]" & Linha,

so que nao vai....:muro:

alguem sabe!:confused:

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que você vai precisar de mais uma variável


y = Application.WorksheetFunction.Index

E somente depois atribuir o valor


Range("C" & linha).Value = y

voce pretende retornar o valor como string ou integer?

Não entendi muito bem o seu objetivo, mas caso não consiga tente postar mais fragmentos e detalhes do projeto que encontraremos uma saida

A sintaxe abeixo está correto


Range("C" & linha).Value = ("A" & linha & "B" & linha)
[\code]

Mas acho que há um erro nos argumentos. Olhe o exemplo abaixo:

[code]
Sub MatchDate()

Dim TheDate As Date
Dim Index As Variant

TheDate = #1/3/95#

' Find a match for the serial value of the date in the range A1:A10
' on Sheet1.
Index = Application.Match(CLng(TheDate), Range("Sheet1!A1:A10"), 0)

' Display the results.
If IsError(Index) Then
MsgBox "Not Found"
Else
MsgBox "Match item: " & Index
End If
End Sub

Att,

Leno Mota

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa, mas estou com problemas para acessar o 4shared. Poderia postar no sendspace?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá! Verifiquei o código e o mesmo apresenta apenas um erro na variavel "Target".

Fiz o teste substituindo a mesma por "Colunas", e declarando "Linha" como inteiro e a macro rodou normalmente.


Sub subin()
Dim Colunas As Range
Set Colunas = Range("E1:F100")
Dim linha As Integer
If Not Application.Intersect(Colunas, Range(Colunas.Address)) Is Nothing Then
linha = Colunas.Row

On Error Resume Next

Range("H" & linha).Value = Application.WorksheetFunction.Index(Range("C1:C100").Value, Application.Match([E1&F1], [A1:A100&B1:B100], 0))

End If
End Sub

Tenta fazer as adequaçoes e me da um retorno.

Att,

Leno Mota.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Boa Noite Leno

    Obrigado pela ajuda, mas ainda nao é isso!

    o codigo está funcionando beleza...

    Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Colunas As Range

    Set Colunas = Range("E1:F100")

    If Not Application.Intersect(Colunas, Range(Target.Address)) Is Nothing Then

    linha = Target.Row

    On Error Resume Next

    Range("H" & linha).Value = Application.WorksheetFunction.Index(Range("C1:C100").Value, Application.Match([E1&F1], [A1:A100&B1:B100], 0))

    End If

    End Sub

    o problema é so nessa parte Match([E1&F1],

    o que preciso é que ele fique assim Match([E & linha&F & linha],

    so que funcionando, porque quando coloco assim ele da erro...

    porque se nao eu tenho que criar um pra cada linha...

    Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Colunas As Range

    Set Colunas = Range("E1:F100")

    If Not Application.Intersect(Colunas, Range(Target.Address)) Is Nothing Then

    linha = Target.Row

    On Error Resume Next

    Range("H1").Value = Application.WorksheetFunction.Index(Range("C1:C100").Value, Application.Match([E1&F1], [A1:A100&B1:B100], 0))

    Range("H2").Value = Application.WorksheetFunction.Index(Range("C1:C100").Value, Application.Match([E2&F2], [A1:A100&B1:B100], 0))

    Range("H3").Value = Application.WorksheetFunction.Index(Range("C1:C100").Value, Application.Match([E3&F3], [A1:A100&B1:B100], 0))

    Range("H4").Value = Application.WorksheetFunction.Index(Range("C1:C100").Value, Application.Match([E4&F4], [A1:A100&B1:B100], 0))

    Range("H5").Value = Application.WorksheetFunction.Index(Range("C1:C100").Value, Application.Match([E5&F5], [A1:A100&B1:B100], 0))

    Range("H6").Value = Application.WorksheetFunction.Index(Range("C1:C100").Value, Application.Match([E6&F6], [A1:A100&B1:B100], 0))

    Range("H7").Value = Application.WorksheetFunction.Index(Range("C1:C100").Value, Application.Match([E7&F7], [A1:A100&B1:B100], 0))

    Range("H8").Value = Application.WorksheetFunction.Index(Range("C1:C100").Value, Application.Match([E8&F8], [A1:A100&B1:B100], 0))

    End If

    End Sub

    sabe como fazer???:rolleyes:

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Cara! Ta difícil pois se declarar a variável como string, a mesma volta entre aspas. O que causa um erro...


    Sub trabs()
    Dim X As Integer
    Dim Variar As String
    For X = 1 To 10
    Variar = "E" & X & "&" & "F" & X
    Range("H1").Value = Application.WorksheetFunction.Index(Range("C1:C100").Value, Application.Match([Variar], [A1:A100&B1:B100], 0))
    Next X
    End Sub

    Estou tentando e em caso positivo, volto a postar.

    Att,

    Leno Mota.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Boa tarde Galeraaaaaaaaaaaa!

    to postando aqui so porque depois de muitos erros muitas procuras no google

    e de quebra a cabeça!:muro:

    ta aqui a resposta da minha duvida para alguem que precise algum dia!

    On Error Resume Next

    Range("C" & linha).Value = Application.WorksheetFunction.Index(Range("E1:E10").Value, Application.Match(Range("A" & linha) & Range("B" & linha), [D1:D10&F1:F10], 0))

    essa linha de vba é uma formula de INDICE+CORRESP que faz o mesmo que o PROCV

    so que com a vantagem que pode colocar mais de um criterio para a busca!

    OBS: o On Error Resume Next e se caso você digitar valor de busca que nao exista ele nao dar erro!

    essa linha em uma formula ficaria assim (para melhor entendimento da galera)

    {=ÍNDICE($E$1:$E$10;CORRESP(A1&B1;$D$1:$D$10&$F$1:$F$10;0))}

    formula matricial, então nao de ENTER e sim CTRL+SHIFT+ENTER

    valeu galera! respondendo so pro caso de alguem precisar um dia!:lol:

    podem fechar o topico!:rolleyes:

    :rolleyes::aplausos:

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Visitante
    Este tópico está impedido de receber novos posts.
    Entre para seguir isso  





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×