Thema Datum  Von Nutzer Rating
Antwort
Rot Laufzeitfehler beim Ansprechen von Tabelle
09.08.2019 13:15:12 Andre
NotSolved
09.08.2019 13:18:41 Gast52125
NotSolved

Ansicht des Beitrags:
Von:
Andre
Datum:
09.08.2019 13:15:12
Views:
672
Rating: Antwort:
  Ja
Thema:
Laufzeitfehler beim Ansprechen von Tabelle

Hallo,


ich habe ein Problem wo ich nicht weiterkomme. Ich habe ein Makro welches eine andere Excel Datei (Quelldatei) öffnet und sich dort 2 Werte rausholt und die zu Datei schreibt in der das Makro ausgeführt wird. Wenn ich die Quelldatei geschlossen habe läuft das Makro sauber durch. Ist die Quelldatei erst geöffnet und das Makro startet dann bricht das Makro mit Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs ab. Ich weiß leider nicht warum.
Kann mir jemand behilflich sein? Ich nutze Office 2016.


Option Explicit

Private Sub Workbook_Open()

   Dim oTargetBook As Object
   Dim oSourceBook As Object
   Dim sDatei As String
   Dim Jahr As String
   Dim Projektnummer As String
   Dim Adresse() As String
   Dim Angebotsnummer As String
   Dim Angebotssumme As Currency
   Dim Einsatzzeit As String
   Dim Angebotssumme_Alt As String
   Dim Einsatzzeit_Alt As String
   Dim Pfad As String
   Dim Angebot As String
   Dim intLeerPos As Integer

   
       
   
   
   Projektnummer = Range("Projektnummer").Value
   Jahr = Right(Projektnummer, 2)
   Angebotssumme_Alt = Range("Angebotssumme").Value
   Einsatzzeit_Alt = Range("Einsatzzeit").Value
   Einsatzzeit_Alt = WorksheetFunction.RoundUp(Einsatzzeit_Alt, 0)
   
     
   If Dir("F:\AAA Projekte\20" & Jahr & "\" & Projektnummer & "\" & Range("Angebotsnummer").Value & "*.xlsx") <> "" Then
          
     
     Application.ScreenUpdating = False 'Das "Flackern" ausstellen
     
      Set oTargetBook = ActiveWorkbook
     
     sDatei = "F:\AAA Projekte\20" & Jahr & "\" & Projektnummer & "\" & Range("Angebotsnummer").Value & "*.xlsx"
     Set oSourceBook = Workbooks.Open(sDatei, False, True) 'nur lesend öffnen
     
         
     
     Angebotssumme = oSourceBook.Sheets("Kalkulation").Range("Angebotssumme_netto").Value
     If Angebotssumme <> Angebotssumme_Alt Then
     oTargetBook.Sheets("Tabelle1").Range("Angebotssumme").Value = Angebotssumme
     oTargetBook.Save
     End If
     
     If NameVorhanden("Kalkulation!Angebotsstunden", oSourceBook) = True Then
     Einsatzzeit = oSourceBook.Sheets("Kalkulation").Range("Angebotsstunden")
     Einsatzzeit = Application.WorksheetFunction.Round(Einsatzzeit, 0)
            If Einsatzzeit <> Einsatzzeit_Alt Then
               oTargetBook.Sheets("Tabelle1").Range("Einsatzzeit").Value = Einsatzzeit
               oTargetBook.Save
            End If
     End If
     
     If NameVorhanden("Kalkulation!Akkordstunden", oSourceBook) = True Then
     Einsatzzeit = oSourceBook.Sheets("Kalkulation").Range("Akkordstunden")
     Einsatzzeit = WorksheetFunction.RoundUp(Einsatzzeit, 0)
            If Einsatzzeit <> Einsatzzeit_Alt Then
             oTargetBook.Sheets("Tabelle1").Range("Einsatzzeit").Value = Einsatzzeit
             oTargetBook.Save
            End If
     End If
     
    oSourceBook.Close False
    
     
     Application.ScreenUpdating = True 'Das Bildschirm-Aktualisieren wieder einschalten
    
   
     
     Set oTargetBook = Nothing
     Set oSourceBook = Nothing
      End If
End Sub


Function NameVorhanden(ByVal s As String, wkb As Workbook) As Boolean
    Dim n As Name
    For Each n In wkb.Names
        If n.Name = s Then
            NameVorhanden = True
            Exit For
        End If
    Next
    'NameVorhanden = False
End Function




 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Laufzeitfehler beim Ansprechen von Tabelle
09.08.2019 13:15:12 Andre
NotSolved
09.08.2019 13:18:41 Gast52125
NotSolved