Collapse column

Autor Thema: Office 2010: Excel VBA: Keine Berechnung von Index(Match) und GetObject  (Gelesen 1384 mal)

Offline Kyriakos

  • Newbie
  • *
  • Beiträge: 8
    • Profil anzeigen
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2016
Office 2010: Excel VBA: Keine Berechnung von Index(Match) und GetObject
« 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
Das Leben kann viel schöner sein mit Excel...

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.