2016-11-24 59 views
0

親愛溢出社區添加式與VBA到單元格範圍

我想要一份添加式一些細胞(4,x)時,對於每個片(SH)。我在main代碼中的for循環中運行sub,它貫穿每列(a)。我嘗試過很多事情,但不幸的是我的代碼只是將不會運行:

Sub InsertFormula(ByVal sh As Worksheet, ByVal a As Long) 

Formel = "=TEXT(" & a & "$1;'TTT')" 
sh.Cells(4, a).Formula = Formel 

End Sub 

編輯:

Sub InsertFormula(ByVal sh As Worksheet, ByVal a As Long) 

Formel = "=TEXT(R1C" & a & ",""TTT"")" 
sh.Cells(4, a).FormulaR1C1 = Formel 

End Sub 

非常感謝,非常

+0

爲什麼「不會運行」?你會得到什麼錯誤信息? –

+1

你定義了'a'作爲你的列,但你實際上是將它作爲'Long'(作爲一個數字)發送到你的'Sub'。在你的'Formel =「= TEXT(」&a & "$1;'TTT')「'你真的需要它作爲你的專欄的一個字母,所以你需要將你的專欄從編號轉換成一個字母 –

+0

我該怎麼辦?非常多 –

回答

1

工作在VBA中,你需要逗號分隔的功能公式中的參數與您的本地設置無關。 (你可以通過使用.FormulaLocal解決它,但我不推薦它,因爲它可能無法在其他機器上運行)

此外,正如Shai Rado指出的,您使用數字作爲列名稱。在這種情況下,我會用R1C1格式,所以你不必將數字轉換成一個字母,即

Formel = "=TEXT(R1C" & a & ",""TTT"")" 
sh.Cells(4, a).FormulaR1C1 = Formel 
1

這需要,而不是列數列字母。此外,我已經改變了配方,使用"代替'並糾正了TEXT公式這兩個是的公式沒有

Sub InsertFormula(ByVal sh As Worksheet, ByVal Col As String) 
    Dim Formel As String 

    Formel = "=TEXT(" & Col & "$1,""TTT"")" 
    sh.Range(Col & "4").Formula = Formel 

End Sub 
Sub test() 
    Call InsertFormula(ActiveSheet, "A") 
End Sub 
+0

打算用'R1C1'符號和'A1'來更新它,不過@arcadeprecinct已經發布了它。選擇你更喜歡哪一個 – Tom

0

剛剛嘗試這一點,克服你的問題的部分原因:把Formel上,無需使用關鍵字。公式

Sub InsertFormula(ByVal sh As Worksheet, ByVal a As Long) 

Formel = "=TEXT(R1C" & a & ",""TTT"")" 
sh.Cells(4, a) = Formel 

End Sub 
相關問題