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

Microsoft Office 2003-2019 => Excel => Thema gestartet von: Alsacehauck2 am August 14, 2013, 20:59:49 Nachmittag

Titel: Office 2010: Fehlermeldung
Beitrag von: Alsacehauck2 am August 14, 2013, 20:59:49 Nachmittag
Hallo liebes Forum,
ich habe folgendes Problem:
Ich hab zwei Excelliste und für eine von beiden möchte ich ein Makro schreiben.
Liste 1 hat in Spalte C Seriennummern und in Spalte H sind die dazugehörigen Preise.
Liste 2 hat in Spalte B die Seriennummern und in Spalte M neue Preise.
Nun möchte ich, dass mein Makro mir die alten Preise ( Liste 1 Spalte H) duch die neuen Preise ( Liste 2 Spalte M ) automatisch ersetzt. Die Seriennummer der Liste zwei sind nicht in der selben Reihenfolge angeordnet wie die der Liste 1.

Nun habe ich folgende Vba geschrieben :

Sub Aktualisieren()
Dim c As Range
For Each c In Workbooks("Liste1.xls").Worksheets("Tabelle2").Range("B10","B2100")
For Each c2 In Workbooks("Liste2.xls").Worksheets("Tabelle1").Range("M10", "M2100")
If c = c2 Then
c2.Offset(0, 5).Value = c.Offset(0, 11).Value
End If
Next
Next
End Sub

Die Fehlermeldung taucht in der erste "for each" Zeile auf.
Das Problem ist dass ich jetzt die Fehlermeldung : Laufzeitfehler "9" Index außerhalb des gültigen Bereichs erhalte.
Und ich finde einfach meinen Fehler nicht. Wäre sehr nett wenn Ihr mir helfen könntet.
Titel: Antw: Office 2010: Fehlermeldung
Beitrag von: maninweb am August 16, 2013, 10:44:19 Vormittag
Hallo Alsacehauck2,

Variablen solltest Du immer deklarieren. Das hattest Du mit der Variable c auch gemacht, c2 jedoch nicht.
Der Fehler deutet zudem darauf hin, dass ein Name nicht stimmt. Hast Du vielleicht einen Tippfehler beim
Dateinamen bzw. Tabellennamen? Und, beide Mappen müssen geöffnet sein.

Anbei ein leicht modifizierter Code, den ich nicht getestet habe.
Code: Visual Basic
  1. Sub Aktualisieren()
  2.  
  3.   Dim c As Range
  4.   Dim c2 As Range
  5.  
  6.   For Each c In Workbooks("Liste1.xls").Worksheets("Tabelle2").Range("B10", "B2100")
  7.  
  8.     For Each c2 In Workbooks("Liste2.xls").Worksheets("Tabelle1").Range("M10", "M2100")
  9.      
  10.       If c.Value = c2.Value Then
  11.        
  12.         c2.Offset(0, 5).Value = c.Offset(0, 11).Value
  13.        
  14.       End If
  15.      
  16.     Next
  17.    
  18.   Next
  19.  
  20. End Sub
Gruß