Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1180to1184
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Hilfe, Problem mit Makro

Hilfe, Problem mit Makro
Günter

Guten Abend,
hätte eine Frage:
Bei unten stehenden Makro bekomme ich die Fehlermeldung 13,
Typ nicht veträglich in Zeile
ArrayTmp = Application.Transpose(ArrayTmp).
Nehme an, dass das Array zu klein ist. Wie könnte ich
hier was Araymäßig vergrößern.
Gruß
Gruß
Sub Liste_Neu()
Dim ArrayAlt, ArrayNeu, ArrayTmp(), oDic As Object
Dim nCount As Long, lngCol As Long, lngRow As Long
Set oDic = CreateObject("Scripting.Dictionary")
With Tabelle1 'Alt
ArrayAlt = .Range("N13", .Cells(.Rows.Count, 14).End(xlUp)).Value2
For nCount = 1 To UBound(ArrayAlt)
oDic(ArrayAlt(nCount, 1)) = 0
Next nCount
Erase ArrayAlt
End With
With Tabelle2 'Neu
ArrayNeu = .Range("A13", .Cells(.Rows.Count, 14).End(xlUp)).Value2
ReDim Preserve ArrayTmp(1 To UBound(ArrayNeu, 2), 1 To UBound(ArrayNeu))
For nCount = 1 To UBound(ArrayNeu)
If Not oDic.exists(ArrayNeu(nCount, 14)) Then
lngRow = lngRow + 1
For lngCol = 1 To 14
ArrayTmp(lngCol, lngRow) = ArrayNeu(nCount, lngCol)
Next lngCol
End If
Next nCount
End With
With Tabelle3 'Fehlende in Neu
.Range("A13", .Cells(.Rows.Count, 14)).ClearContents
If lngRow > 0 Then
ReDim Preserve ArrayTmp(1 To UBound(ArrayTmp), 1 To lngRow)
ArrayTmp = Application.Transpose(ArrayTmp)
With .Range("A13").Resize(lngRow, UBound(ArrayTmp, 2))
.Cells = ArrayTmp
.EntireColumn.AutoFit
End With
.Select
End If
End With
Sheets("Fehlende in Neu").Select
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Hilfe, Problem mit Makro
14.10.2010 20:08:05
Günter
Hi, Tino!
Sehe, dass Du noch aktiv bist.
Hatte getestet. Wenn ich 250 o.ä. Einträge hatte, funktioniert
alles. Sobald mehr Einträge da sind, bekomme ich die genannte Fehlermeldung.
Gruß
Günter
keine Probleme mit 10000 Daten?
14.10.2010 21:07:35
Tino
Hallo,
habe es eben gerade mit etwas mehr als 10.000 Daten getestet unter xl2003,
keine Probleme zu erkennen?!
Gruß Tino
AW: klein wenig Toleranter
18.10.2010 07:36:09
Günter
Danke Tino.
Leider ohne Erfolgt.
Gruß
Günter
Anzeige
und was geht nicht? ...
18.10.2010 15:04:19
Tino
Hallo,
bei mir gehts unter xl2003 und 2007, was funktioniert bei Dir nicht?
Gruß Tino
noch ein versuch
18.10.2010 17:01:58
Tino
Hallo,
hier noch ein letzter Versuch gestestet mit über 100000 Daten. (Zeit bei mir, keine 5 Sekunden)
Sub Liste_Neu()
Dim ArrayAlt, ArrayNeu, ArrayTmp(), oDic As Object
Dim nCount As Long, lngCol As Long, lngRow As Long

Set oDic = CreateObject("Scripting.Dictionary")

With Tabelle1 'Alt 
 ArrayAlt = .Range("N13", .Cells(.Rows.Count, 14).End(xlUp)).Value2
 For nCount = 1 To Ubound(ArrayAlt)
    oDic(ArrayAlt(nCount, 1)) = 0
 Next nCount
 Erase ArrayAlt
End With

With Tabelle2 'Neu 
    ArrayNeu = .Range("A13", .Cells(.Rows.Count, 14).End(xlUp)).Value2
    
    Redim Preserve ArrayTmp(1 To Application.Min(Ubound(ArrayNeu), Rows.Count - 13), 1 To Ubound(ArrayNeu, 2))
    
    For nCount = 1 To Ubound(ArrayTmp)
        If Not oDic.exists(ArrayNeu(nCount, 14)) Then
            lngRow = lngRow + 1
            For lngCol = 1 To 14
                ArrayTmp(lngRow, lngCol) = ArrayNeu(nCount, lngCol)
            Next lngCol
        End If
    Next nCount
End With


With Tabelle3 'Fehlende in Neu 
    .Range("A13", .Cells(.Rows.Count, 14)).ClearContents
    If lngRow > 0 Then
        With .Range("A13").Resize(lngRow, Ubound(ArrayTmp, 2))
            .Cells = ArrayTmp
            .EntireColumn.AutoFit
        End With
     .Select
    End If
End With

End Sub
Gruß Tino
Anzeige
AW: noch ein versuch
19.10.2010 07:54:58
Günter
Hallo Tino,
vielen Dank für Deine Geduld.
Funktioniert jetzt bestens.
Schöne Grüße
Günter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige