明确声明的变量上的VBA类型不匹配13

明确声明的变量上的VBA类型不匹配13,vba,excel,Vba,Excel,这段代码已经运行了一个月,它突然开始在我标记的行上抛出类型不匹配13。我已经搜索了一天了,所有相关的问题要么是单元格格式,要么是对象相关的 我想我这里的问题是两者都不是,它看起来很简单,让我不想再看到它 我尝试的是: 使用类型为的application.inputbox方法,将所述变量声明为整数,variant而不是double,完全忽略了0的用法,使其为20,但仍然得到错误。除非您输入0或将变量声明为零,否则代码将正常工作。这个代码已经运行了一个多月了。有什么问题 编辑:更多信息 Sub Fa

这段代码已经运行了一个月,它突然开始在我标记的行上抛出类型不匹配13。我已经搜索了一天了,所有相关的问题要么是单元格格式,要么是对象相关的

我想我这里的问题是两者都不是,它看起来很简单,让我不想再看到它

我尝试的是:

使用类型为的application.inputbox方法,将所述变量声明为整数,variant而不是double,完全忽略了0的用法,使其为20,但仍然得到错误。除非您输入0或将变量声明为零,否则代码将正常工作。这个代码已经运行了一个多月了。有什么问题

编辑:更多信息

Sub Farincal_OPC_hamyuzde_vs_giriş()

Dim dbs1 As String
Dim dbis1 As String
Dim kayek1 As String
Dim kdn1 As String
Dim ph As Integer
Dim l As Integer
Dim dd As Integer
Dim ctf As Integer
Dim farin As Double
Dim farinper(18) As Double
Dim a As Integer

dd = MsgBox("question?", vbYesNo)
If dd = vbYes Then GoTo 13
If dd = vbNo Then GoTo 789


13


a = 1                'this resets the array
For a = 1 To 18
farinper(a) = 0
Next a
86

farin = InputBox("0 - PREMIX" & vbNewLine & "1 - etc") 'this holds the choice's number on farin

'THE TYPE MISMATCH HAPPENS ON THE LINE BELOW, AS SOON AS IT CHECKS OUT TO BE 0

    If farin = 4 Or farin = 5 Then 'this is used for the other choices which i deleted above.

'Code DOES NOT continue the line below, type mismatch happens as soon as the above line is run

    a = MsgBox("warning", vbExclamation)

    GoTo 86   'PREMİX CHECK!!!!
    End If
    If farin = 0 Then sheet1.Cells(28, 3) = InputBox("question")
    If farin > 18 Or farin < 0 Then
    MsgBox ("you are wrong")
    GoTo 86
    End If


a = 0
For a = 0 To 18

788
        If farin = a Then farinper(a) = InputBox("more input")
        If farinper(a) < 0 Or farinper(a) > 1 Then
        MsgBox ("more error handle")
        GoTo 788
        End If
Next a


If Application.WorksheetFunction.Sum(farinper) < 1 Then
MsgBox ("info")
GoTo 86
End If
If Application.WorksheetFunction.Sum(farinper) > 1 Then
MsgBox ("error handle")
GoTo 13
End If

sheet1.Cells(27, 3) = farinper(0) ' PREMİX!!

a = 1

For a = 1 To 18

If a = 3 Or a = 4 Then GoTo 9424 'skip unecessary entry

sheet1.Cells(a + 24, 2) = farinper(a)

9424

Next a
Sub-Farincal_OPC_hamyuzde_vs_giriş()
作为字符串的Dim dbs1
Dim dbis1作为字符串
Dim kayek1作为字符串
将kdn1设置为字符串
将ph值设置为整数
作为整数的Dim l
作为整数的Dim dd
将ctf设置为整数
暗法林双
双精度法林管(18)
将a变暗为整数
dd=MsgBox(“问题?”,vbYesNo)
如果dd=vbYes,则转到13
如果dd=vbNo,则转到789
13
a=1'这将重置阵列
对于a=1到18
farinper(a)=0
下一个
86
farin=InputBox(“0-PREMIX”&vbNewLine&“1-etc”)。它保存farin上的选项编号
'类型不匹配发生在下一行,只要它检查为0
如果farin=4或farin=5,则“这用于我上面删除的其他选项”。
'代码不继续下面的行,只要运行上面的行,类型不匹配就会发生
a=MsgBox(“警告”,V感叹号)
转到86'PREMİX检查!!!!
如果结束
如果farin=0,则sheet1.单元格(28,3)=输入框(“问题”)
如果farin>18或farin<0,则
MsgBox(“你错了”)
后藤86
如果结束
a=0
对于a=0到18
788
如果farin=a,则farinper(a)=输入框(“更多输入”)
如果farinper(a)<0或farinper(a)>1,则
MsgBox(“更多错误句柄”)
后藤788
如果结束
下一个
如果Application.WorksheetFunction.Sum(farinper)<1,则
MsgBox(“信息”)
后藤86
如果结束
如果Application.WorksheetFunction.Sum(farinper)>1,则
MsgBox(“错误句柄”)
后藤13
如果结束
表1.单元(27,3)=farinper(0)'PREMİX!!
a=1
对于a=1到18
如果a=3或a=4,则转到9424'跳过不必要的条目
表1.单元(a+24,2)=法林珀(a)
9424
下一个
我在代码的下一行发现一个错误“类型不匹配”

        If farin = a Then farinper(a) = InputBox("more input")
当我在输入框中输入非数字字符时

如果“a”是InputBox的输入,“a”不能分配给farinper(),因为它们的类型是“字符串”和“双精度”


我猜您遇到了这个错误。

是不是在
vbNewLine
之后缺少了
&
farin=InputBox(“0-PREMIX”&vbNewLine和“1-etc”)
如果dd=vbNo,则转到789,但标签实际上是
788
?不,我只是过度删除了^,你能编辑你的问题并更新代码吗?类型不匹配可能会发生,因为你应该在
0-PREMIX
输入框中输入一个整数,我猜你输入的是一个非数值…?不,只是0。将其暗显为整数、变量,将其设置为farin=0,并使用Cdbl(farin)等。无解决方案。该值不能为0,但可以为00001,可以为4,可以为-10000000。我不知道这不是一个输入。它只是一个整数计数器。我可能已经完成了代码的其余部分。我现在就试试粘贴的版本。哇,我才意识到。该行没有给出新创建工作簿上的类型不匹配。它只在工作簿上显示它的打开状态。我勒个去。