2012-07-11 40 views
7

我有這個VBA宏的問題。如何在不更改公式的情況下更改單元格的值(顯示文本)?

Sub demoChangeText() 
    Application.Range("B2").Value = "Overidden text" 
End Sub 

我的測試是here。要運行此宏,請在Excel中打開它,請按Ctrl+F8並選擇demoChangeText

因此,此宏會更改單元格B2(向我們顯示的文本)的值,但會清除其公式。我需要改變B2的值,但也需要保留公式。

所以我的問題是如何更改單元格的顯示文本而不更改其公式?

UPDATE

我問這個問題,因爲我試圖解決this problem

+1

別我認爲這是有道理的。該公式是什麼定義顯示。如果您想更改顯示,請更改公式。如果將該值更改爲「重寫文本」,則基本上將公式更改爲一個簡單的公式,即「輸出此文本..」 – 2012-07-11 09:29:44

+0

@Davuz ChrisNeilsen完美地回答您的問題。我還在下面的答案中附上解決方案文件 – 2012-07-11 14:05:20

回答

11

我不知道這是否會幫助,因爲這是一個有點分不清你的潛在需求是,但在這裏不用反正:

幾件事情會影響細胞的顯示

  1. 輸入的數值,如果它的一個恆定
  2. 所述計算的結果,如果它是一種式
  3. 的小區的小區
  4. 條件格式(或多個)的格式,如果任何

在這個例子中板只要你有=ROW()&COLUMN()一個公式,它返回的22

字符串結果可以使這個顯示東西ê通過應用細胞格式LSE,
例如0;0;0;Ov\e\r\ri\d\d\e\n t\ext的格式將顯示任何字符串值作爲Overridden text

這可以通過施加與VBA與

Range("B2").NumberFormat = "0;0;0;Ov\e\r\ri\d\d\e\n t\ext\s" 

Range("B2").NumberFormat = "0;0;0;""Overridden texts""" 
+1

+ 1很好的解釋:)是的,這是改變顯示文本的一種方法。 – 2012-07-11 10:27:00

+5

+1您也可以用引號括起來,而不是轉義每個字母的格式。 '「0; 0; 0;」「重寫文本」「」' – 2012-07-11 10:53:34

+0

@ChrisNeilsen太棒了!這是用你的答案更新的測試文件https://dl.dropbox.com/u/6194904/2012/TestChangeText.xlsm – 2012-07-11 14:04:06

相關問題