如何在VBA中的函数中使用单元格中的值?

时间:2018-04-22 16:07:57

标签: excel vba excel-vba

我试图计算1000名司机一年内发生事故的次数,司机发生事故的概率为1%。

我在获得以下代码方面获得了帮助:

Public Function AccidentGenerator(N As Long) As Long
Application.Volatile
Dim i As Long
Randomize
For i = 1 To N
    AccidentGenerator = AccidentGenerator + Int(Rnd() + 0.01)

Next i
End Function

但是,我希望能够更改工作簿中的概率 - 即使上面代码中的0.01引用我工作簿中的单元格。任何帮助将非常感谢

3 个答案:

答案 0 :(得分:2)

另一个去:

Public Function AccidentGenerator(N As Long, epsilon As Double) As Long
    Application.Volatile
    Dim i As Long
    Randomize
    For i = 1 To N
        AccidentGenerator = AccidentGenerator + Int(Rnd() + epsilon)
    Next i
End Function

像:

enter image description here

答案 1 :(得分:0)

只需使用Evaluate()函数或其替代语法[]

例如,如果单元格A1包含值0.01:

Debug.Print Evaluate("A1") ' prints 0.01
Debug.Print [A1]           ' also prints 0.01

答案 2 :(得分:0)

或指向一个单元格如下:

Public Function AccidentGenerator(ByVal N As Long) As Long
Application.Volatile
Dim i As Long
Randomize
For i = 1 To N
    AccidentGenerator = AccidentGenerator + Int(Rnd() + Worksheets("Sheet1").Range("A1"))
Next i
End Function

引用的sheet1中的单元格A1
 Worksheets("Sheet1").Range("A1")

将包含0.01。显然,您可以更改单元格中的单元格/工作表/值。