2012-12-26 21 views
0

我想使用一個公式內的用戶輸入如下:使用輸入變量的公式內以宏

Sub example() 

Dim StockDays As Integer 
StockDays = InputBox(Prompt:="How many days?") 

Range("AG2").FormulaR1C1 = "=ROUNDUP(RC[-6]*" & StockDays & "/90, 0)" 
Range("AG2").Select 
Selection.AutoFill Destination:=Range(Cells(2, 33), Cells(1500, 33)) 

End Sub 

運行時,上述代碼在ROUNDUP線引發錯誤。

運行時錯誤1004.
應用程序定義或對象定義的錯誤。

我認爲問題與變量StockDays有關。

我該如何安排代碼才能使其工作?

+0

公式廁所ks完美 - 我會冒險猜測它與'StockDays'部分無關,並且您沒有引用表單或類似的東西。試試'表格(1).Range(「AG2」)'種類表示法。 –

回答

3

我評論的代碼在varaiable值中使用的變量,所以你不應該有任何問題的理解吧:)

Option Explicit 

Sub example() 
    Dim StockDays As Integer 

    '~~> Type:=1 will ensure that the user enters only numbers 
    StockDays = Application.InputBox(Prompt:="How many days?", Type:=1) 

    '~~> No Need to autofill. You can fill all the range in one go 
    Thisworkbook.Sheets("Sheet1").Range("AG2:AG1500").FormulaR1C1 = _ 
    "=ROUNDUP(RC[-6] * " & StockDays & "/ 90, 0)" 

    'OR this as mentioned in your comment 

    Thisworkbook.Sheets("Sheet1").Range("AG2:AG1500").FormulaR1C1 = _ 
    "=ROUNDUP((RC[-6]* " & StockDays & "/90),0)" 
End Sub 
+0

謝謝,但這給我的問題相同的錯誤。什麼可能是錯的? –

+0

已更新代碼。現在就試試。將「Sheet1」替換爲相關的圖紙名稱。如果您嘗試在其他工作簿上運行代碼,請替換Thisworkbook。同時確保工作表不受保護。 –

+0

我發現問題來自圓括號。我沒有想到。 –

0

我認爲這應該工作

範圍( 「AG2」)。FormulaR1C1 = 「= ROUNDUP(RC [-6] * " & StockDays & "/90,0)」

ü沒有的錯誤是,你其中應用公式,但忘了替換U帶

+0

我試過了,但沒有奏效。 –

+0

我試了一下,它產生了一些預期的輸出= = ROUNDUP(B36 * 12/90,0)' –

+0

如果它仍然不能正常工作,你可以在這裏粘貼你用這個代碼得到的錯誤 –