Notifications
Clear all

Tentando milagre..... Variavel X Range

6 Posts
2 Usuários
0 Reactions
1,203 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Aos mestres...... ;)

Acho que estou tentando algo impossível, mas como não me dou por vencido facilmente.... recorro ao este fórum !!!

Meu conhecimento de VBA é limitado, ou reformulo uma macro feita no automático ou adapto um código já criado. Ou seja, vou me virando !!!

Meu dilema atual é VARIAVEL referenciando o range, ou seja, o código tem diversos IF e ELSEIF, e ficar redigitando o range completo é pedir pra morrer...... Como a planilha vai da coluna A até a col AT, cada coluna tem uma nova função que faz referencia a diversas outras colunas, ai que o bixo pega !!!

Segue só um exemplo do que procuro:

Worksheets("Ressuprimento").Select
EndLinha2 = Cells.SpecialCells(xlLastCell).Row

    For LIN2 = 5 To EndLinha2 Step 1
vA = "A" & LIN2
vB = "B" & LIN2
    vCorresp = WorksheetFunction.Match(Range(vA), Sheets("Paletização").Range("A:A"), 0)
    If vA <> "" Then

A primeira variavel "vA", retorna a celula "A5", onde no Range(vA), traz o valor da celular A5 normalmente. Porem, o que pretendo é trocar o Range(vA) por apenas vA.
Minha variavel vCorresp, ficaria assim:

    vCorresp = WorksheetFunction.Match(vA, Sheets("Paletização").Range("A:A"), 0)

Aproveitando........ gostaria de utilizar os [ ], mas alguns camaradas que ja tentaram, falaram que dá problema quando a planilha é usada em maquinas diferentes, principalmente com excel diferente (2007 e 2010). Mas tambem não consegui colocar variavel nesta tranqueira.... tipo: [A & LIN2] !!!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/04/2014 10:19 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não sei se entendi, mas pode experimentar, por exemplo:
vA = Cells(LIN2, "A")
Sempre lque variar lin2 vA "pega" o valor da celula correspondente

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/04/2014 10:30 am
(@gtsalikis)
Posts: 2373
Noble Member
 

eu já vi em algum lugar, alguém usar intervalos (creio que nomeou no Excel e usou o nome no VBE)

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 23/04/2014 10:51 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não sei se entendi, mas pode experimentar, por exemplo:
vA = Cells(LIN2, "A")
Sempre lque variar lin2 vA "pega" o valor da celula correspondente

Reinaldo,
Depois que a gente escreve é que vemos que não conseguimos expressar o que realmente queriamos........

a expressão "RANGE("A" & LIN2)" eu gostaria de colocar em uma variavel para que eu possa utilizar em duas situações, sendo:

1º - WorksheetFunction.Match(Range("A" & LIN2), Sheets("Paletização").Range("A:A"), 0)

e

2º - RANGE("A" & LIN2) = 1 + 1

A escrita da expressão é a mesma, mas a utilização nao é...... no 1º ele vai utilizar o valor da celula para fazer o calculo e ja no 2º ele vai colocar o resultado do calculo na celula. É este o milagre que to tentando com variavel a mesma para as duas situações !!! rsss.......

Tudo isso pra deixar o código mais "clean", menos embaraçoso aos olhos !!!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/04/2014 12:18 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Se vai ficar mais clean não sei, mas ainda não consegui entender.
Pode-se atribuir um valor a uma variável, esse pode ser o valor de uma célula ou o endereço da mesma ou mesmo uma formula de calculo, porem
ao atribuir um novo valor, muda-se essa variável, mas se estiver em um loop, ao retornar ao inicio o valor/definição passa a ser o inicial, até outra atribuição

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/04/2014 12:31 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde galera,

Não sei se entendi muito bem também, mas tenta assim:

Worksheets("Ressuprimento").Select
EndLinha2 = Cells.SpecialCells(xlLastCell).Row

    For LIN2 = 5 To EndLinha2 Step 1
vA = Range("A" & LIN2).value
vB = "B" & LIN2
vC = Sheets("Paletização").Range("A:A").value
On Error Resume Next

    vCorresp = WorksheetFunction.Match(vA, vC, 0)
    If vCorresp Is Nothing Then

Qualquer coisa da o grito.
Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/04/2014 3:01 pm