【问题标题】:Matrix size defined by inputbox, mismatch error输入框定义的矩阵大小,不匹配错误
【发布时间】:2013-11-30 08:47:26
【问题描述】:

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

这是代码,请注意开头的错误。

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

【问题讨论】:

  • 您的代码中存在一些问题。您没有写在哪一行出现错误。如果它在InputBox 行中,则以这种方式制作:A(i, j) = InputBox("Enter number in " &amp; i &amp; ", " &amp; j &amp; ".")

标签: vba matrix mismatch


【解决方案1】:

我很惊讶你甚至首先得到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. 现在是您的主要错误。 Mismatch Error。您收到该错误是因为您尝试将String 存储在A(i, j) = InputBox("Enter number in ", i, ", ", j, ".") 行中的Single 数组中您可以使用CSng 将该字符串转换为Single,或者您可以使用Application.Inputbox Type:=1Application.Inputbox 上阅读 Excel 的帮助
  5. 使用正确的Error Handling。如果用户在输入框中按下Cancel,您的代码将出错。正确的Error Handling 还会涵盖您的代码可能遇到的其他错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多