vba - 为什么我需要 Int 函数
问题描述
A. Int 函数在这段代码中有何帮助?B. 为什么在没有 +1 的情况下正常工作时将 +1 添加到 Rnd
尝试删除 +1
Function DrawOne(Range As Variant, Optional ReCalc As Variant = False)
'Chooses one cell at Random from a Range and returns range contents
'make Function volatile if Recalc is True
Application.Volatile ReCalc
'Determine a Random cell
DrawOne = Range(Int(Range.Count) * Rnd + 1)
End Function
解决方案
该Int()
函数的原因是Range.Count * Rnd
可以返回超过 0.50 的十进制值。发生这种情况时,该值将向上取整,这将为您提供比预期高 1 的上限。
这是使用 OP 代码的修改版本的简单测试:
Sub Test()
Dim n As Long
Dim result As Double
Dim Target As Range
Set Target = Range("A1:A10")
For n = 1 To 1000
If Intersect(Target, DrawOne(Target)) Is Nothing Then
MsgBox "DrawOne mising Int() function failure"
End
End If
Next
End Sub
Function DrawOne(Range As Range) As Range
Set DrawOne = Range(Range.Count * Rnd + 1)
End Function
推荐阅读
- laravel - 中间件后认证
- powershell-4.0 - New-PSDrive:无法将参数绑定到参数“Root”,因为它为空
- python - 如何使用 Python 在 Odoo 11 中的发票上创建计算字段?
- python - UnicodeDecodeError:“ascii”编解码器无法解码位置 6 中的字节 0xf2:序数不在范围内(128)
- delphi - Delphi:如何在 FMX Stringgrid 上绘制复选框?
- android - 在 Android 中重用 recyclerview 的布局和适配器是一种很好的做法吗
- swift - 在 RxSwift getter 函数中使用 Swift 泛型 - 各种问题
- mysql - 当当前日期超过表中的特定日期时,Laravel 自动更新表中的字段
- javascript - 如何获取 javascript 文件内容并解析它以使用它的变量
- python - 正则表达式无法获取空格并且我无法正确拆分字符串?