2013-12-18 96 views
1

爲了簡化,我在Excel工作簿中有兩張紙。刪除單引號VBA功能

如果我在sheet1的其中一個單元格中寫入=sheet2!R3C2,則單元格會正確地獲取sheet2單元格R3C2的值。 我想概括,對於在VBA很多行,所以我的代碼是:

row = XX a long 

temp = "=sheet2!R" & row - 1 & "C2" 

Range("c" & row).Value = temp 

但是,當我使用此代碼,單元格的值(行,3)是=sheet2!'RXXC2'

哪有我刪除單引號?

回答

1
Range("C" & row).Formula = temp 

會產生在你的正確的公式。

你應該考慮,而不是做循環的是

Range("A1").Formula = "=Sheet2!$B1" 
Range("A1").Resize(100, 1).Formula = Range("A1").Formula 

第一行插入一個公式=Sheet2!$B1在活動工作表的單元格A1。所述$美元符號確保了柱將不被遞增(同樣適用於數字

然後,第二線複製跨越100行向下式從A1更換B柱後的數字

所以現在

A1 =Sheet2!B1 
A2 =Sheet2!B2 
A3 =Sheet2!B3 
... 

而且,這是一個有點不清楚你要真正這樣做考慮另一種選擇是什麼,我■使用Evaluate()功能節省公式的值到另一個範圍

Range("c" & row).Value = Evaluate(temp)或者Range("C" & Row).Value = [temp]

+0

它看起來像有一個轉,雖然事情......變「行」是解決「列」在'範圍( 「c」&row)'部分。另外,由於OP似乎使用R1C1尋址,我認爲你需要FormulaR1C1。 – Floris

+1

@弗洛伊斯對不起,但我不明白你爲什麼認爲有轉置正在進行?我認爲OP只是試圖引用來自其他工作表的相對單元格。 – 2013-12-18 16:15:48

+0

啊......我在R1C1模式下看到'C ...'。抱歉。我實際上最初寫了一個像你一樣的解決方案,但是使用'R [-1] C3'來指示如何在R1C1中做到「一排第3列」 - 但從未保存編輯,因爲我認爲這不是他所做的這樣做。我需要更多的睡眠。 – Floris

0

你要設置的公式,而不是值:

Range("c"&row).FormulaR1C1 = temp 
0

嘗試寫Range("c" & row).FormulaR1C1=temp