由输入框定义的矩阵大小,不匹配错误

时间:2013-11-17 03:26:09

标签: vba matrix mismatch

我希望通过输入框定义矩阵的大小,但是当运行宏时,它会给出不匹配错误。宏的目标是将两个矩阵相乘,这是一个必须以这种方式编写的赋值,但由于这个原因,它不会通过前几行。

这是代码,在开始时注意它的错误。

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

1 个答案:

答案 0 :(得分:0)

我很惊讶你甚至先得到Mismatch Error。您应首先获得Constant Expression Required - Compile Error

一些事情

  1. 使用Option Explicit它将强制您明确声明变量
  2. VB.Net不同,您必须具体声明每个变量。考虑这一行Dim ai, aj, bi, bj, ci, cj As Integer。此处只有cj将被声明为Integer,其余的将被声明为Variant
  3. Dim A(ai, aj) As Single您不能声明这样的数组。这是首先出错的行。与Constant Expression Required - Compile Error。阅读REDIM Arrays
  4. 上的网页
  5. 现在给你的主要错误。 Mismatch Error。您收到该错误是因为您尝试将String存储在行Single中的A(i, j) = InputBox("Enter number in ", i, ", ", j, ".")数组中。您可以使用CSng将该字符串转换为{{1}或者您可以Single使用Application.InputboxType:=1上阅读Excel的帮助
  6. 使用正确的Application.Inputbox。如果用户在输入框中按Error Handling,您的代码将会出错。正确Cancel还将涵盖您的代码可能遇到的其他错误。