weniger Buttons, weniger Code
marell23
Ich hab da mal ne Anfrage.
Zunächste der Code:
Sub Daten_Blatt1_einfügen()
Dim Tab1 As Worksheet, Tab2 As Worksheet, Tab3 As Worksheet, i As Long, j As Long
Dim Mappe2 As Workbook, Mappe3 As Workbook, zelle As Range
Sheets("Blatt1").Range("E2:E10000, F2:F10000, I2:I10000").Value = ""
Application.ScreenUpdating = False
On Error GoTo Fehler
Set Tab1 = Sheets("Blatt1")
Set Mappe2 = Workbooks.Open("Pfad\Daten_0815.xls")
Set Tab2 = Mappe2.Sheets("Daten_0815")
Set Mappe3 = Workbooks.Open("Pfad\Daten_0916.xls")
Set Tab3 = Mappe3.Sheets("Daten_0916")
For i = 2 To Tab1.Range("D10000").End(xlUp).Row
For j = 2 To Tab2.Range("B10000").End(xlUp).Row
If Tab1.Range("D" & i).Value = Tab2.Range("B" & j).Value Then
Tab1.Range("E" & i).Value = Tab2.Range("C" & j).Value
End If
Next
Next
For i = 2 To Tab1.Range("E10000").End(xlUp).Row
For j = 2 To Tab3.Range("B10000").End(xlUp).Row
If Tab1.Range("E" & i).Value = Tab3.Range("B" & j).Value Then
Tab1.Range("F" & i).Value = Tab3.Range("C" & j).Value
End If
Next
Next
For i = 2 To Tab1.Range("E10000").End(xlUp).Row
For j = 2 To Tab3.Range("B10000").End(xlUp).Row
If Tab1.Range("E" & i).Value = Tab3.Range("B" & j).Value Then
Tab1.Range("I" & i).Value = Tab3.Range("D" & j).Value
End If
Next
Next
Set Tab1 = Nothing
Set Tab2 = Nothing
Set Tab3 = Nothing
Mappe2.Close
Mappe3.Close
Application.ScreenUpdating = True
End
Fehler: MsgBox "Datei konnte nicht gefunden werden. Bitte Dateinamen prüfen!"
End Sub
Dieser Code steht 8 mal untereinander für 16 verschiedene Blätter und wird von 8 Buttons angewählt.Meine Frage: Wie kann ich mit diesem Code, einmal geschrieben, alle Sheets nach und nach auswählen damit dann die Daten aus nur noch 2 verbleibenen Blättern (alle 0815 Daten sind nun in einem Blatt) eingefügt werden?
Folgendes habe ich so gelöst: Statt Sheets("Blatt1").Range("E2:E10000, F2:F10000, I2:I10000").Value = "" habe ich dies
For n = 2 To 9 'Inhalt der Spalten löschen
Sheets(n).Range("E2:E10000, F2:F10000, I2:I10000").Value = ""
Next n
Lösungsversuche waren: Die obige Schleife auch Anwenden.
For n = 2 To 9
Sheets(n).Activate
.....
Für Tab1 wollte ich dann schreiben set Tab1 = ActiveSheet oder Activeworkbook.ActiveSheet.
Geht nicht so richtig. Bei jedem Versuch kommt die Meldung Index außerhalb des gültigen Bereiches oder Datei nicht gefunden (interne Fehlermeldung ist deaktiviert).
Hintergrund: zur Zeit sind es 16 Exceltabellen in die ich Daten von Extern einzeln einpflege. Das Makro vergleicht Nummern und überträgt dann die Werte nach Vorgabe. Zukünftig würde ich mit 2 Tabellen arbeiten wollen.
Hoffe das war jetzt nicht zu viel Text.
Grüße
Markus
Für Rückfragen stehe ich zur Verfügung.
Vielen Dank