2012-12-26 22 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

如果它仍然不能正常工作,你可以在这里粘贴你用这个代码得到的错误 –