2016-12-19 5 views
1

У меня всегда есть ошибка компиляции: ОЖИДАЕТСЯ: конец statemets И всегда показывают мне THS часть кода («F1: H66»)VBA ВПР формула Ошибка компиляции

Public Sub macro2() 
Application.ScreenUpdating = False 
Application.Calculation = xlCalculationManual 
Range("G31").Select 
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-4],Sheet2.Range("F1:H66"),3, False)" 
Application.Calculation = xlCalculationAutomatic 
Application.ScreenUpdating = True 
End Sub 
+1

Ошибка на самом деле довольно легко увидеть здесь на SO, обратите внимание на цвет текста по формуле. Он красный между «», а черный - на дальности, а затем снова красный. В большинстве IDE (возможно, все) изменение цвета текста - это то, что вы должны внимательно изучить. Это может быть правильно, но в большинстве случаев изменение цвета плохое. К сожалению, в редакторе VBA такой роскоши нет, но SO имеет это. – Andreas

+0

Спасибо ... Вот почему я спрашиваю, где проблема, потому что я не опытный в VBA, и я вижу, что редактор VBA меняет цвет только по ключевым словам. Notepad ++ может решить эту проблему. –

ответ

0

Используйте Chr(34), чтобы иметь ", его легче читать.

Во-вторых, старайтесь избегать использования Select и ActiveCell, вместо этого вы можете использовать прямой подход Range см ниже код:

Range("G31").FormulaR1C1 = "=VLOOKUP(RC[-4],Sheet2.Range(" & Chr(34) & "F1:H66" & Chr(34) & "),3, False)" 
+0

Может ли храбрый спутник объяснить, почему? –

2

двойной вверх ваш двойные кавычки, когда они происходят внутри строки:

"=VLOOKUP(RC[-4],Sheet2.Range(""F1:H66""),3, False)"

------------------------------^--------^----------

0

Попробуйте с этим кодом. Вы можете настроить значения ячеек по своему усмотрению.

NewValue = Application.WorksheetFunction.VLookup(Range("G31"), Range("F1:H66"), 3, False ) 
0

Другой способ заключается в использовании
"=VLOOKUP(RC[-4],Sheet2!R1C6:R66C8,3, False)"

Это даст формулу: =VLOOKUP(C31,Sheet2!$F$1:$H$66,3, FALSE)