2013-12-16 2 views
1

Действительно быстрый вопрос о том, как форматировать VBA в формулах excel. Когда вы вставляете формулу в excel и хотите вставить переменную из vba, например, если b - это строка, которую вы бы использовали, " & b & " - это правильное форматирование? Чтобы проиллюстрировать проблему, у меня есть код ниже и попытался использовать это форматирование и хорошо ... Я не знаю, почему это не работает, я получаю (Ошибка компиляции: Ожидаемый: Конец инструкции). Может ли кто-нибудь сказать мне, где я ошибаюсь?Вставить VBA в форматирование формул?

Dim HrsSTD As String 
Dim HrsSAT As String 
Dim HrsSUN As String 
Dim HrsSTWN As String 
Dim sdFormula 

HrsSTD = ActiveCell.Address 
Selection.Offset(0, 1).Select 
HrsSAT = ActiveCell.Address 
Selection.Offset(0, 1).Select 
HrsSUN = ActiveCell.Address 
Selection.Offset(0, 1).Select 
HrsSTWN = ActiveCell.Address 

sdFormula = "=IF((" & Range(NamedRange).Cells(2, 1).Address & _ 
     "=""Please add a title"",0,VLOOKUP((" & Range(NamedRange).Cells(2, 1).Address & _ 
     ",'Tables (H)'!$H$2:$J$6,2,FALSE)* _ 
" & HrsSTD & "+VLOOKUP(" & Range(NamedRange).Cells(2, 1).Address & _ 
     ",'Tables (H)'!$H$2:$J$6,2,FALSE)* _ 
" & HrsSAT & "*1.25+VLOOKUP((" & Range(NamedRange).Cells(2, 1).Address & _ 
     ",'Tables (H)'!$H$2:$J$6,2,FALSE)*" & HrsSUN & "* _ 
1.5+VLOOKUP((" & Range(NamedRange).Cells(2, 1).Address & _ 
     ",'Tables (H)'!$H$2:$J$6,2,FALSE)*" & HrsSTWN & "*0.75)" 

Код я напечатал бы в первенствует бы: Но я хочу, чтобы изменить A13-х и I16 (т.е. все относительные ссылки) в переменные в VBA

=IF(A13="Please add a title",0,VLOOKUP(A13,'Tables (H)'!$H$2:$J$6,2,FALSE)*F16+VLOOKUP(A13,'Tables (H)'!$H$2:$J$6,2,FALSE)*G16*1.25+VLOOKUP(A13,'Tables (H)'!$H$2:$J$6,2,FALSE)*H16*1.5+VLOOKUP(A13,'Tables (H)'!$H$2:$J$6,2,FALSE)*I16*0.75) 
+0

Что он 'Астерикс' в вашей формуле? –

+0

, используя его как раз, то есть количество, заданное HrsSTD, имеет значение Vlookup –

+0

Можете ли вы опубликовать точную формулу excel, как вы бы набирали Excel? –

ответ

2

Это то, что вы пытается? Также я вижу, что вы не приняли моего совета из предыдущего ответа.

Еще один совет. Перерыв кода в простых частях. Это легче понять.

Проблема с кодом в линии

",'Tables (H)'!$H$2:$J$6,2,FALSE)* _ 
" & HrsSAT & "*1.25+VLOOKUP((" & Range(NamedRange).Cells(2, 1).Address & _ 

Вы не можете написать это так. Первая строка не имеет конца ". Вы не можете перенести его на следующую строку.

это то, что вы пытаетесь?

Dim sFormula As String 
Dim sAddr As String 

sAddr = Range(NamedRange).Cells(2, 1).Address 

sFormula = "=IF(" & sAddr & _ 
      "=""Please add a title"",0,VLOOKUP(" & _ 
      sAddr & ",'Tables (H)'!$H$2:$J$6,2,FALSE)*F16+VLOOKUP(" & _ 
      sAddr & ",'Tables (H)'!$H$2:$J$6,2,FALSE)*G16*1.25+VLOOKUP(" & _ 
      ",'Tables (H)'!$H$2:$J$6,2,FALSE)*H16*1.5+VLOOKUP(" & _ 
      sAddr & ",'Tables (H)'!$H$2:$J$6,2,FALSE)*I16*0.75)" 
+0

Ahh да, мои извинения я забыл об этом шаге. Я дам ему еще одну попытку, но я до сих пор не уверен, что вы имеете в виду о финале ». Я 4 дня в VBA, поэтому мои извинения, если это ужасно –

+0

Вы видите строку' ', 'Tables (H)'! $ H $ 2: $ J $ 6,2, FALSE) * _' у него нет конечной цитаты. –

Смежные вопросы