Ir ao conteúdo
  • Cadastre-se

VBA ( & linha )


deejaywesley

Posts recomendados

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:

Link para o comentário
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

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

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:

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois...

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:

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...