Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
excel 2010中的类型不匹配13_Excel_Vba_Types_Type Mismatch - Fatal编程技术网

excel 2010中的类型不匹配13

excel 2010中的类型不匹配13,excel,vba,types,type-mismatch,Excel,Vba,Types,Type Mismatch,下面的代码在Excel2003下运行得非常好,但在2010年,在下面的一行“If Array2(1,i)0 Then”中返回了错误“type mismatch 13” 有人知道如何解决这个问题吗 提前Thx 桑尼 她的密码是: Sub BerekenGepresteerdeUrenVoorEenMaand(SheetNaam As String) Application.ScreenUpdating = False Application.DisplayAlerts = False Dim

下面的代码在Excel2003下运行得非常好,但在2010年,在下面的一行“If Array2(1,i)0 Then”中返回了错误“type mismatch 13”

有人知道如何解决这个问题吗

提前Thx

桑尼

她的密码是:

Sub BerekenGepresteerdeUrenVoorEenMaand(SheetNaam As String)

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Dim Array1 As Variant
Dim Array2 As Variant

Dim Range1 As Range
Dim Range2 As Range
Dim RangeTarget1 As Range
Dim RangeTarget2 As Range
Dim mRange As Excel.Range
Dim RangeNieuwSaldo As Range

Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer

Dim subTotaal As Double

ActiveWorkbook.Worksheets(SheetNaam).Activate

Set Range1 = ActiveSheet.Range("EersteRij")
Set Range2 = ActiveSheet.Range("LaatsteRij")
Set RangeTarget1 = ActiveSheet.Range("NaamVeld")
Set RangeTarget2 = ActiveSheet.Range("SaldiVeld")

Array1 = Range1.Value
Array2 = Range2.Value

RangeTarget1.Locked = False
RangeTarget2.Locked = False

j = 0
For i = LBound(Array1, 2) To UBound(Array1, 2)

If Array2(1, i) <> 0 Then 'Line generating error

j = j + 1

RangeTarget1.Cells(j, 1).Value = Array1(1, i)
RangeTarget2.Cells(j, 1).Value = Array2(1, i)

Else

End If

Next

For k = j + 1 To 11

RangeTarget1.Cells(k, 1).Value = ""
RangeTarget2.Cells(k, 1).Value = ""

Next

RangeTarget1.Locked = False
RangeTarget2.Locked = False

Erase Array1
Erase Array2

Set Range1 = Nothing
Set Range2 = Nothing
Set RangeTarget1 = Nothing
Set RangeTarget2 = Nothing

Application.EnableEvents = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True


End Sub
Sub-BerekenGepresteerdeUrenVoorEenMaand(SheetNaam作为字符串)
Application.ScreenUpdating=False
Application.DisplayAlerts=False
Dim Array1作为变体
Dim Array2作为变体
变暗范围1作为范围
变暗范围2作为范围
变暗范围TARGET1作为范围
变暗范围TARGET2 As范围
尺寸范围为Excel.Range
Dim Range Nieuwsaldo作为范围
作为整数的Dim i
作为整数的Dim j
将k变为整数
作为整数的Dim l
Dim Subtotal为双精度
活动工作簿。工作表(SheetNaam)。激活
Set Range1=ActiveSheet.Range(“EersteRij”)
Set Range2=ActiveSheet.Range(“LaatsteRij”)
设置RangeTarget1=ActiveSheet.Range(“NaamVeld”)
设置RangeTarget2=ActiveSheet.Range(“SaldiVeld”)
数组1=范围1.值
Array2=范围2.值
RangeTarget1.Locked=False
RangeTarget2.Locked=False
j=0
对于i=LBound(Array1,2)到UBound(Array1,2)
如果Array2(1,i)0,则“行生成错误”
j=j+1
RangeTarget1.Cells(j,1).Value=Array1(1,i)
RangeTarget2.单元格(j,1).Value=Array2(1,i)
其他的
如果结束
下一个
对于k=j+1至11
RangeTarget1.Cells(k,1).Value=“”
RangeTarget2.Cells(k,1).Value=“”
下一个
RangeTarget1.Locked=False
RangeTarget2.Locked=False
擦除阵列1
擦除阵列2
设置范围1=无
设置范围2=无
设置RangeTarget1=无
设置RangeTarget2=无
Application.EnableEvents=True
Application.ScreenUpdating=True
Application.DisplayAlerts=True
端接头

我想,有时候,我会比array2中的输入数据更大。。。 比如没有存储在array2(110000)左右的数据,也没有什么不是数字(比如0) 因此,在故障线路出现之前,可能需要一个防故障条件,如:

if not array2(1,i) is nothing then 'or you might just want to exit the For loop here.
    if array2(1,i)<>0 then ...
'if this doesn't work try if not IsEmpty(array2(1,i)) as condition

Dim i As Integer
更改为
Dim i As Integer
很抱歉,将代码复制到forumArray2=Range2时键入错误。请确保Range2是正确的值@user3220149@user3220149我认为它的
Array2(I,1)
不是吗?好吧,谢谢你的回答。我发现Array2中的数据有一个问题:它包含一些错误值,导致了类型不匹配错误。问题解决了!
 dim test(20) as integer
 test(1)=23
 ..
 test(10)=44 'last input
 a=ubound(test) 'my guess it will return 20, and not 10