我想编写一个函数,作为输入,应该在与上述对角线(从底部从左到右在其细胞VBA - 在For循环进入溢出错误
方阵顶部)的正数,和
对角线空单元的下方,
喜欢这个3×3的矩阵(第一小区包含#10,第二小区#5等):
10 5 1
9 6
4
在我对这个矩阵做任何事情之前,我需要验证对角线上方和上方的单元格包含正数,而其他单元格是空的。我写了下面的代码。
问题是它在第二个For循环中给我一个溢出错误,对于我的生活,我不明白为什么。 对于3 x 3矩阵(即n = 3,p = 3),第二个For循环的第一行将为:For i = 3 to 2 Step -1。这里有什么问题?
Option Base 1
Private Sub triangle1()
Dim y As Variant
y = Application.InputBox(_
Prompt:=" Choose a square matrix in a worksheet : ", Type:=8)
Dim i As Byte, j As Byte, n As Byte, p As Byte, s As Byte
n = UBound(y, 1)
p = UBound(y, 2)
Debug.Print LBound(y, 1), n, p
s = 1
If n <> p Then
Debug.Print "False"
Exit Sub
Else
' First For loop
For i = 1 To n
For j = 1 To p
If y(i, j) <= 0 Or Not IsNumeric(y(i, j)) Then
Debug.Print "False"
Exit Sub
End If
Next
p = p - 1
Next
' Second For loop
For i = n To 2 Step -1
s = s + 1
For j = s To p
If Not IsEmpty(y(i, j)) Then
Debug.Print "False"
Exit Sub
End If
Next
Next
Debug.Print "True"
End If
End Sub
这是因为-1不会成为其字节,请在即时窗格中尝试cbyte(-1)。 –