Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<

Microsoft Office 2003-2019 => Excel => Thema gestartet von: Kyriakos am Februar 25, 2016, 12:51:46 Nachmittag

Titel: Office 2010: Excel VBA: Keine Berechnung von Index(Match) und GetObject
Beitrag von: Kyriakos am Februar 25, 2016, 12:51:46 Nachmittag
Hallo,

ich habe folgendes Makro erstellt, wo eine Excel Mappe mit GetObject geöffnet wird und ein Formeln (worksheetfunctions) laufen.

Sub ZusatzdatenTestfile()
'Fügt die folgenden Daten aus der neuesten GSPR-Tabelle ein: Lfd-Nr., Auftragsnummer, TID, MT Belegnummer (Nur Zugverkauf)

Dim Datei As String
Dim Zeile As Long
Dim ZeileMax As Long

ZeileMax = Tabelle2.UsedRange.Rows.Count
Datei = "C:\Testfiles\Tesfile1.xlsx"

GetObject (Datei)

    With Tabelle2
   
        For Zeile = 2 To ZeileMax
         On Error Resume Next
           
            If .Cells(Zeile, 9) = "" Then
                .Cells(Zeile, 9) = Application.WorksheetFunction.Index(Workbooks(Datei).Worksheets(1).Range("A:A"), _
                                    Application.WorksheetFunction.Match(Cells(Zeile, 1), Workbooks(Datei).Sheets(1).Range("C:C"), 0))
            End If
           
            If .Cells(Zeile, 10) = "" Then
                .Cells(Zeile, 10) = Application.WorksheetFunction.VLookup(.Cells(Zeile, 1), _
                                            Workbooks(Datei).Worksheets(1).Range("C:P"), 12, False)
            End If
                       
            If .Cells(Zeile, 11) = "" Then
                .Cells(Zeile, 11) = Application.WorksheetFunction.VLookup(.Cells(Zeile, 1), _
                                            Workbooks(Datei).Worksheets(1).Range("C:P"), 11, False)
            End If
                       
            If .Cells(Zeile, 4) = "00858357" Then
                If .Cells(Zeile, 12) = "" Then
                    .Cells(Zeile, 12) = Application.WorksheetFunction.VLookup(.Cells(Zeile, 1), _
                                                Workbooks(Datei).Worksheets(1).Range("C:P"), 13, False)
                End If
            End If
           
        Next Zeile
       
    End With
   
    Workbooks(Datei).Close (False)

End Sub

Das Problem ist, manhcmal wird die erste Funktion (index und match) nicht berechnet, obwohl es passende Treffer gibt.

Ich habe den Eindruck, dass Excel schon mit der Berechnung anfängt, bevor noch die Datei geöffnet wurde. Manchmal öffnet sich die Datei schnell und die Berechnung findet statt. Ich habe das mehrmals mit den selben Dateien getestet.

Kann man das irgendwie fixen? Mit application.wait komme ich nicht weiter (bringt nichts).

Die Datei die mit GetObject geöffnet wird, ist nun 12 MB groß, es ist eine große Datenbank halt.

Kommischerweise, ist es immer die erste Berechnet die nicht statt findet. Die nächsten danach mit VLookUp funktionieren einwandfrei.

Mit Workbooks.Open ist dasselbe Problem und noch schlimmer, da findet NIE die Berechnung statt.

Danke für die Hilfe.

Lg