Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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
Vba 为什么在比较两列时会出现运行时错误?_Vba_Excel - Fatal编程技术网

Vba 为什么在比较两列时会出现运行时错误?

Vba 为什么在比较两列时会出现运行时错误?,vba,excel,Vba,Excel,我有一个宏,可以比较两个不同单元格中的两列。当我测试它时,它开始工作。(请忽略德语注释) 两个工作表都有8列,但我只想比较一下前几列。我已经在我拿到一张支票的地方划线了 运行时错误424 有人能帮忙吗 'Objekte festlegen Dim j As Integer Dim d1 As Object Dim d2 As Object Dim d3 As Object Dim e As Range Dim shA As Worksheet Dim shB As Worksheet Set

我有一个宏,可以比较两个不同单元格中的两列。当我测试它时,它开始工作。(请忽略德语注释)

两个工作表都有8列,但我只想比较一下前几列。我已经在我拿到一张支票的地方划线了

运行时错误424

有人能帮忙吗

'Objekte festlegen
Dim j As Integer
Dim d1 As Object
Dim d2 As Object
Dim d3 As Object
Dim e As Range
Dim shA As Worksheet
Dim shB As Worksheet

Set d1 = CreateObject("scripting.dictionary")
Set d2 = CreateObject("scripting.dictionary")
Set d3 = CreateObject("scripting.dictionary")
Set shA = Worksheets(Format(Date, "dd.mm.yyyy"))
Set shB = Worksheets(ActiveSheet.Index - 1)

'Füge ICM Nummern des alten Tabellenblattes Objekten zu
With shB
    For Each e In .Cells(2, 1).Resize(Cells(Rows.Count, 1).End(3).Row).Value
        d1(e) = True
        d2(e) = True
    Next e
End With

'Neue und alte ICM Nummern bestimmen
With shA
对于每个e英寸单元格(2,1)。调整单元格大小(行数, 2) .End(3).行).值


您希望循环通过
范围
,而不是

此外,您还需要限定
单元格
行。通过添加
作为前缀,使用
和shA
进行计数

更改:

For Each e In .Cells(2, 1).Resize(Cells(Rows.Count, 2).End(3).Row).Value
致:


你好,谢伊,谢谢你的帮助。成功了!下一件事是If语句,在这里我得到一个424运行时错误。知道怎么解决吗?@Fiops这是哪条线?在这篇帖子中?@Fiops这是全新的,你3分钟前刚刚添加的。尝试以1:2获得2:)不幸的是,我似乎无法遵循这方面的逻辑,因为它与另一个关于
Dictionary
对象的完全不同的逻辑有关。你需要发布一篇新的帖子,并更好地解释(用一些数据截图)你想要实现的目标。它将允许其他用户查看它,并有望提出解决方案
'Bestimme Anzahl zu erstellender Zeilen
If d1.Count > d3.Count Then
Set j = d1.Count
Else:
Set j = d3.Count
End If
'Füge Zellen ein
Range("1:1").Resize(j).Insert Shift:=xlDown, Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

'Objekte transponieren und einfügen in aktuelles Tabellenblatte unter ICM Abzug
On Error Resume Next
    .Cells(1, 10).Resize(d1.Count) = Application.Transpose(d1.keys)
    .Cells(1, 11).Resize(d3.Count) = Application.Transpose(d3.keys)
On Error GoTo 0
End With
For Each e In .Cells(2, 1).Resize(Cells(Rows.Count, 2).End(3).Row).Value
For Each e In .Cells(2, 1).Resize(.Cells(.Rows.Count, 2).End(3).Row)