2013-11-04 82 views
1

爲什麼記錄的VBA顯示計算值。而我的代碼顯示唯一的公式(但如果我進入每個單元格並按f2,然後返回,它顯示計算值)。我使用的是表格在Excel 2010中似乎是基本相同的事情:Excel 2010 VBA,爲什麼公式顯示爲文本?

記錄碼

Columns("D:D").Select 
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
Selection.NumberFormat = "General" 
Range("D8").Select 
ActiveCell.FormulaR1C1 = "IF(ISNUMBER(FIND(""Value1"",[@[Program]])),""yes"",""no"")" 

我的代碼

Sub Formula_Insert 
Dim MyTbl As listObject 
Set MyTbl = ActiveSheet.ListObjects("NameofTableonSheet") 
With MyTbl 
    .ListColumns.Add 4 
    .HeaderRowRange(4) = "Column D Header" 
    With .ListColumns("Column D Header") 
    .Range.NumberFormat = "General" 
    .DataBodyRange.formula = "IF(ISNUMBER(FIND(""Value1"",[@[Program]])),""yes"",""no"")" 
    End With 
End With 

顯然,要插入公式的理由是這樣的用戶可以看到公式而不是結果。我認爲圍繞公式的選項中的設置都是正確的,並且由於記錄的代碼顯示了計算值,所以它必須是VBA的問題,不是嗎?

+10

您需要在If語句前加上一個等號:.DataBodyRange.formula =「= IF(ISNUMBER(FIND(」「Value1」「,[@ [Program]])),」「yes 「」,「」no「」)「 – Sorceri

+3

Sorceri - 你應該把它移到答案上,這樣它可以被標記爲這樣。 – guitarthrower

回答

0

如果您在Excel中並且沒有獲得結果並且公式正在以文本形式讀取,請清除單元格中的格式。然後重新輸入公式