如何获取指定单元格区域最小值?WorksheetFunction.Min返回异常
问题解决:VBA获取指定区域最小值结果错误
问题根源
代码存在变量名拼写错误:
- 已定义起始单元格地址变量
strBegLookBackDO和结束单元格地址变量strCurLookBackDO,但引用Range时错误写成了strBegLookBack和strCurLookBack(漏掉后缀DO)。 - 这导致
Range(A,B)引用的不是预期的B8:B14区域,而是错误的单元格范围,最终WorksheetFunction.Min计算的不是目标区域的最小值,返回了错误结果9。
修正后的代码
Option Explicit ' 强制变量声明,避免未定义变量问题 Dim strBegLookBackDO As String Dim strCurLookBackDO As String Dim CurColDO As String ' 显式声明为String类型 Dim testvar1 As Variant Dim C As Integer, R As Integer ' 声明循环变量 For C = 2 To IntNumCol ' 将数字列号转为字母列标 CurColDO = Chr(C + 64) For R = 14 To IntNumRow ' 生成起始和结束单元格地址(如B8和B14) strBegLookBackDO = CurColDO & (R - 6) strCurLookBackDO = CurColDO & R ' 修正变量名,引用正确的单元格 Set A = Sheets("Composite").Range(strBegLookBackDO) Set B = Sheets("Composite").Range(strCurLookBackDO) Set Where = Worksheets("Composite").Range(A, B) ' 计算区域最小值 testvar1 = WorksheetFunction.Min(Where) Next R Next C
额外建议
- 在模块顶部添加
Option Explicit语句,强制所有变量必须声明,能快速发现变量名拼写错误这类问题。 - 变量名尽量清晰易懂,避免模糊缩写,降低拼写错误概率。
内容的提问来源于stack exchange,提问作者Robert Kendall
相关产品推荐
相关产品推荐

