求各列最小值的最大值:VBA代码输出异常求助
问题分析与代码修正
代码中的核心错误
- 公式运算符错误:题目给定公式为
aij = 12 – 3i + j,但代码中写成了a(i, j) = 12 - 3 * i - j,j前的运算符应为+而非-,这是结果不符合预期的根本原因。 - 变量声明不严谨:
Dim i, j, m As Integer仅将m声明为Integer类型,i和j默认是Variant类型,需明确声明所有变量的类型。 - 命名冲突风险:
max是VBA内置函数,用它作为数组名可能引发意外问题,建议改用语义更清晰的名称(如colMin)。
修正后的代码
Sub task1() Dim i As Integer, j As Integer, m As Integer Dim a(5, 5) As Integer Dim colMin(5) As Integer ' 替换原max数组名,避免内置函数冲突 ' 按正确公式填充数组 For i = 0 To 4 For j = 0 To 4 a(i, j) = 12 - 3 * i + j ' 修正j的运算符 Next j Next i ' 计算每列的最小值 For i = 0 To 4 colMin(i) = a(i, 0) For j = 1 To 4 If a(i, j) < colMin(i) Then colMin(i) = a(i, j) Next j Next i ' 找出各列最小值中的最大值 m = colMin(0) For i = 1 To 4 If colMin(i) > m Then m = colMin(i) Next i MsgBox m End Sub
修正后运行代码,即可得到符合预期的计算结果。
内容的提问来源于stack exchange,提问作者bqees
相关产品推荐
相关产品推荐

