Fórmula Excel da dificuldade VBA

0

Eu tenho uma fórmula que quero gerar no VBA e colocar em uma célula. A fórmula final é:

=IF(ISNA(MATCH(B6670,ProcMIRs!B1:B235,0)),"","Found in ProcMIRs row " & MATCH(B6670,ProcMIRs!B1:B235,0))

e quando eu digito isso em uma célula, funciona bem, retornando a mensagem ou nada.

No VBA, tenho:

rToMIRs.Offset(0, 18).Formula = "=IF(ISNA(MATCH(RC[-17],ProcMIRs!B1:B" & Sheets("ProcMIRs").Range("B1048576").End(xlUp).Row & ",0)),"""",""Found in ProcMIRs row "" & MATCH(RC[-17],ProcMIRs!B1:B" & Sheets("ProcMIRs").Range("B1048576").End(xlUp).Row & ",0))"

Quando eu coloco a string na janela imediata, é exatamente o que eu quero, mas quando eu a atribuo à planilha, fico:

=IF(ISNA(MATCH(B6673,ProcMIRs!'B1':'B235',0)),"","Found in ProcMIRs row " & MATCH(B6673,ProcMIRs!'B1':'B235',0))

Então, o que diabos está inserindo as aspas simples em torno do intervalo B1:B235 na referência da folha ProcMIRs? Se eu deletá-los na célula, a fórmula funciona normalmente, é claro. Eu passei os últimos 30 minutos tentando coisas como atribuí-lo a uma variável de string primeiro, etc. sem sorte.

Qualquer ideia seria apreciada.

    
por BillR 20.06.2015 / 00:24

1 resposta

2

Sua fórmula é inconsistente, você usa a marcação R1C1 em um lugar e depois muda para A1 em outra. Escolha um e fique com ele.

rToMIRs.Offset(0, 18).FormulaR1C1 = _ 
 "=IF(ISNA(MATCH(RC[-17],ProcMIRs!R1C2:R" & Sheets("ProcMIRs").Range("B1048576").End(xlUp).Row & _
 "C2,0)),"""",""Found in ProcMIRs row "" & MATCH(RC[-17],ProcMIRs!R1C2:R" & _
 Sheets("ProcMIRs").Range("B1048576").End(xlUp).Row & "C2,0))"

( Não testado , não tenho o Excel na minha frente agora, desculpe.)

    
por 20.06.2015 / 20:08