Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1444to1448
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

Automatisierungsfehler

Automatisierungsfehler
04.09.2015 16:07:02
Markus
Hallo zusammen,
ich bekomme bei folgendem code einen Automatisierungsfehler.
ich teste unter windows 10 mit Excel 2010.
Ich habe in einem anderen Beitrag hier im Forum gelesen dass es wohl an
Set objAl = CreateObject("System.collections.arraylist") im Zusammenhang mit dem fehlenden Netframework 3.5 liegt.
Kann mir jemand helfen den code umzuschreiben sodass er auch ohne netframework 3.5 läuft.
wäre super!
Grüße Markus
  • 
    Private Sub Datum()
    Dim L As Long
    Dim objAl As Object
    Dim vntOut As Variant
    Dim vntDaten As Variant
    Dim strOneLine As String
    On Error GoTo ErrHandler
    vntDaten = Workbooks("Daten.xlsx").Sheets("Tabelle1").Range("B2:D7000") 'muss geöffnet sein
    Set objAl = CreateObject("System.collections.arraylist")
    With ThisWorkbook.Sheets("Tabelle1") 'Anpassen
    For L = LBound(vntDaten) To UBound(vntDaten)
    If vntDaten(L, 1) = .Range("C2") Then
    If vntDaten(L, 3) = .Range("C7") Then
    objAl.Add (CDbl(vntDaten(L, 2)))
    End If
    End If
    Next
    With objAl
    .Sort 'sortieren
    vntOut = .toArray
    End With
    .Range("C59:C63").ClearContents
    .Range("C59").Resize(UBound(vntOut) + 1) = WorksheetFunction.Transpose(vntOut)
    End With
    ErrHandler:
    Debug.Print Err.Number, Err.Description, strOneLine
    Resume Next
    End Sub
    


  • 14
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Automatisierungsfehler
    04.09.2015 17:03:41
    Nepumuk
    Hallo,
    ungetestet, da ich deine Mappen nicht vorliegen habe:
    Option Explicit

    Private Sub Datum()
        
        Dim ialngIndex As Long, ialngCount As Long
        Dim avntOutput As Variant
        Dim avntData As Variant
        Dim vntCompare1 As Variant, vntCompare2 As Variant
        
        On Error GoTo ErrHandler
        
        avntData = Workbooks("Daten.xlsx").Sheets("Tabelle1").Range("B2:D7000").Value 'muss geöffnet sein
        
        With ThisWorkbook.Sheets("Tabelle1") 'Anpassen
            
            vntCompare1 = .Range("C2").Value
            vntCompare2 = .Range("C7").Value
            
            For ialngIndex = LBound(avntData) To UBound(avntData)
                
                If avntData(ialngIndex, 1) = vntCompare1 Then
                    
                    If avntData(ialngIndex, 3) = vntCompare2 Then
                        
                        Redim Preserve avntOutput(0 To ialngCount)
                        avntOutput(ialngCount) = avntData(ialngIndex, 2)
                        ialngCount = ialngCount + 1
                        
                    End If
                End If
            Next
            
            Call QuickSort(LBound(avntOutput), UBound(avntOutput), avntOutput)
            
            .Range("C59:C63").ClearContents
            .Range("C59").Resize(UBound(avntOutput) + 1) = WorksheetFunction.Transpose(avntOutput)
            
        End With
        
        Exit Sub
        
        ErrHandler:
        Debug.Print Err.Number, Err.Description
        Resume Next
    End Sub

    Private Sub QuickSort(ByVal pvlngLbound As Long, ByVal pvlngUbound As Long, ByRef pravntArray As Variant)
        
        Dim ialngIndex1 As Long, ialngIndex2 As Long
        Dim vntTemp As Variant, vntBuffer As Variant
        
        ialngIndex1 = pvlngLbound
        ialngIndex2 = pvlngUbound
        
        vntBuffer = pravntArray((ialngIndex1 + ialngIndex2) \ 2)
        
        Do
            
            Do While pravntArray(ialngIndex1) < vntBuffer
                ialngIndex1 = ialngIndex1 + 1
            Loop
            
            Do While vntBuffer < pravntArray(ialngIndex2)
                ialngIndex2 = ialngIndex2 - 1
            Loop
            
            If ialngIndex1 < ialngIndex2 Then
                
                If pravntArray(ialngIndex1) <> pravntArray(ialngIndex2) Then
                    
                    vntTemp = pravntArray(ialngIndex1)
                    pravntArray(ialngIndex1) = pravntArray(ialngIndex2)
                    pravntArray(ialngIndex2) = vntTemp
                    
                End If
                
                ialngIndex1 = ialngIndex1 + 1
                ialngIndex2 = ialngIndex2 - 1
                
            ElseIf ialngIndex1 = ialngIndex2 Then
                
                ialngIndex1 = ialngIndex1 + 1
                ialngIndex2 = ialngIndex2 - 1
                
            End If
        Loop Until ialngIndex1 > ialngIndex2
        
        If pvlngLbound < ialngIndex2 Then Call QuickSort(pvlngLbound, ialngIndex2, pravntArray)
        If ialngIndex1 < pvlngUbound Then Call QuickSort(ialngIndex1, pvlngUbound, pravntArray)
        
    End Sub

    Gruß
    Nepumuk

    Anzeige
    AW: Automatisierungsfehler
    06.09.2015 09:34:57
    Markus
    Hallo Nepumuk,
    vielen Dank für Deine schnelle Antwort.
    Ich teste heute abend.

    AW: Automatisierungsfehler
    06.09.2015 12:11:21
    Markus
    Hallo Nepumuk,
    klappt noch nicht ganz.
    Fehler:
    13 Typen unverträglich
    Die relevanten Daten sind Datumsangaben im Format DD.MM.YYYY
    vielleicht liegt es daran?
    Gruß Markus

    AW: Automatisierungsfehler
    06.09.2015 16:38:09
    Nepumuk
    Hallo,
    in welcher Zeile?
    Gruß
    Nepumuk

    AW: Automatisierungsfehler
    06.09.2015 17:03:34
    Markus
    Hallo Nepumuk,
    also C59:C63 soll ja mit den Übereinstimmungen aus C2 und C7 befüllt werden. Dein code läuft durch auch ohne den Error handler - es werden nur keine Daten in c59:C63 eingetragen.
    In der Quelldatei (daten.xlsx) sind in Spalte B Zahlen und in D stehen Daten (DD.MM.JJJJ).
    Grüße

    Anzeige
    AW: Automatisierungsfehler
    06.09.2015 17:20:23
    Nepumuk
    Hallo,
    ja was jetzt? Kannst du eine Mustermappe hochladen?
    Gruß
    Nepumuk

    AW: Automatisierungsfehler
    06.09.2015 18:11:15
    Markus
    Hallo Nepumuk,
    nachträgliches editieren geht ja nicht.
    Kannst Du den link (https://www.herber.de/bbs/user/100046.xlsm) entfernen.
    berichtigte Datei habe ich hochgeladen.

    Anzeige
    AW: Automatisierungsfehler
    06.09.2015 19:29:29
    Nepumuk
    Hallo,
    ändere mal diese Zeile:
    Dim avntOutput As Variant
    so:
    Dim avntOutput() As Variant
    Gruß
    Nepumuk

    AW: Automatisierungsfehler
    06.09.2015 19:33:18
    Markus
    Hallo Nepumuk,
    so gehts! Vielen lieben Dank.
    Grüße

    AW: Automatisierungsfehler
    06.09.2015 19:56:11
    markus
    ...aber nur auf den ersten Blick.
    wenn ich die Werte mit =ISTZAHL(C59) prüfe, dann kommt falsch.
    Ich benötige aber ein richtiges Datum. Die Zell ist mit "Datum" formatiert.
    gibts hierfür noch eine Lösung?
    Danke.

    AW: Automatisierungsfehler
    07.09.2015 11:26:54
    Nepumuk
    Hallo,
    eigenartig, denn im Array befinden sich eindeutig Datumswerte.
    Ändere diese Zeile:
    avntOutput(ialngCount) = avntData(ialngIndex, 2)
    so:
    avntOutput(ialngCount) = CLng(avntData(ialngIndex, 2))
    Gruß
    Nepumuk

    Anzeige
    AW: Automatisierungsfehler
    07.09.2015 21:20:58
    Markus
    Hallo Nepumuk,
    jetzt gehts und es sind eindeutig datumswerte.
    Vielen Dank.

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige