2011-10-17 63 views
5

我想寫使用VBA這個公式:當寫入字符串到細胞,VBA插入額外的單引號

ActiveCell.Value = "=f(R[-1]C[0],Sheet1!" & ColumnLetter & i & ")" 

哪裏ColumnLetter一些變量一封信,我的微距單位計算早些時候,f是一些功能,我是一些號碼。

的問題是,當我運行此,細胞被賦予此相反:(如果ColumnLetter = F,I = 16):

=f(R[-1]C[0],Sheet1!'F16') 

,但我想:

=f(R[-1]C[0],Sheet1!F16) 

爲什麼是VBA還是Excel將這些單引號括在F16中?如果我在公式中沒有包含R [-1] [0]作爲參數,它不會插入這些額外的引號,但我需要包括這些。

非常感謝!

+0

你有什麼打算呢?看起來好像你在混合'R1C1'符號和'A1'。請參閱:http://www.lytebyte.com/2008/04/29/what-are-a1-and-r1c1-reference-style-in-excel/ – JMax

+0

使用兩者是不可能的?我想爲我的函數取兩個參數,一個來自單元格左邊,另一個來自列「ColumnLetter」和行「i」。 – Derek

回答

8

它的組合R1C1A1尋址。您需要選擇一種方法並將其用於這兩個部分。
請注意,如果您在單元格中輸入=f(R[-1]C[0],Sheet1!F16),則出於同樣的原因會出現錯誤。

你說你需要使用R1C1樣式的第一個地址,但(假設這是因爲你不想 絕對地址),您可以使用.Offset代替

ActiveCell.Value = "=f(" & Replace(ActiveCell.Offset(-1, 0).Address, "$", "") _ 
& ",Sheet1!" & ColumnLetter & i & ")" 
+0

完美,正是我想要的,並且像魅力一樣工作。你無法混合格式是一種遺憾......我很幸運,我想要的一個相對變量很容易解決。謝謝你的時間! – Derek

+0

+1覆蓋。 – brettdj

1

撇號意味着Excel應該將其解釋爲文本。

寫入ActiveCell.Formula。這種方式被認爲是公式。

+0

這將無法正常工作,Excel中創建公式時會添加引號 – JMax

+0

我意識到它不起作用......有沒有解決方法? – Derek

相關問題