我希望通过输入框定义矩阵的大小,但是当运行宏时,它会给出不匹配错误。宏的目标是将两个矩阵相乘,这是一个必须以这种方式编写的赋值,但由于这个原因,它不会通过前几行。
这是代码,在开始时注意它的错误。
Sub SumaMatrices()
Dim ai, aj, bi, bj, ci, cj As Integer
j = 1
i = 1
ai = InputBox("Enter number of rows in matrix A.")
aj = InputBox("Enter number of columns in matrix A.")
Dim A(ai, aj) As Single
Do
Do
A(i, j) = InputBox("Enter number in ", i, ", ", j, ".")
j = j + 1
Loop Until j < aj
i = i + 1
Loop Until i < ai
j = 1
i = 1
bi = InputBox("Enter number of rows in matrix A.")
bj = InputBox("Enter number of columns in matrix A.")
Dim B() As Double
Do
Do
B(i, j) = InputBox("Enter number in ", i, ", ", j, ".")
j = j + 1
Loop Until j < bj
i = i + 1
Loop Until i < bi
i = 1
j = 1
If aj = bi Then
ci = ai
cj = bj
Dim C() As Double
k = 1
D = 0
Do
Do
Do
Z = A(i, k) * B(k, j)
D = D + Z
Loop Until k > aj
C(i, j) = D
i = i + 1
Loop Until i > ci
j = j + 1
Loop Until j > cj
If Not aj = bi Then
Messagebox = ("Multiplication is not possible.")
End If
End If
End Sub
答案 0 :(得分:0)
我很惊讶你甚至先得到Mismatch Error
。您应首先获得Constant Expression Required - Compile Error
。
一些事情
Option Explicit
它将强制您明确声明变量VB.Net
不同,您必须具体声明每个变量。考虑这一行Dim ai, aj, bi, bj, ci, cj As Integer
。此处只有cj
将被声明为Integer
,其余的将被声明为Variant
Dim A(ai, aj) As Single
您不能声明这样的数组。这是首先出错的行。与Constant Expression Required - Compile Error
。阅读REDIM Arrays
Mismatch Error
。您收到该错误是因为您尝试将String
存储在行Single
中的A(i, j) = InputBox("Enter number in ", i, ", ", j, ".")
数组中。您可以使用CSng
将该字符串转换为{{1}或者您可以Single
使用Application.Inputbox
在Type:=1
上阅读Excel的帮助Application.Inputbox
。如果用户在输入框中按Error Handling
,您的代码将会出错。正确Cancel
还将涵盖您的代码可能遇到的其他错误。