2013-12-16 138 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)* _'它沒有結尾報價。 –