2013-12-16 140 views
1

关于如何在Excel公式中格式化VBA真的很快。当你插入一个公式到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)" 

我会输入到Excel中的代码将是:但我想改变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

他在你的公式中是什么'Asterix'? –

+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

啊,是的,我很抱歉,我忘了这一步。我会再试一次,但我仍然不确定你对结尾的意思“。我是VBA的4天,所以我很抱歉,如果它很糟糕 –

+0

你看到'','表(H)'行! $ H $ 2:$ J $ 6,2,FALSE)* _'它没有结尾报价。 –