Hallo,
die Änderungen wurden in der übertragenen Datei vorgenommen.
Auffällig ist die Größe der Excel-Datei mit 9MB. In den Tabellen sind nur wenige Inhalte vorhanden.
Ursache:
In der Sheet Tabelle1 ist der Benutzer Bereich von A1 bis L1.048.576 in beschlag genommen. Von diesen sind allerdings nur die ersten 9 Zeilen mit Inhalten belegt worden. Beim Restlichen Bereich von A11 bis L1.048.576 handelt es sich um leere Zellen, die z.Tl. nur Rahmenformatierungen beinhaltet.
Lösung:
1. Kopie von Arbeitsmappe anlegen und beide Dateien öffnen.
1. Alle Zeilen von 11 bis 1 Mio. komplett löschen und die Formatierungen der ganzen Tabelle zurücksetzen.
2. Formatierungen von der Kopie des Bereichs A1 bis L10 von der Kopie übertragen
Ergebnis:
Nach dem Speichern der Arbeitsmappe hat diese eine Dateigröße von ca. 36kb.
---------------------
Zur eigentlichen Aufgabe:
Der nachstehende Code muss in den Code der Sheet Tabelle 2 kopiert werden:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngValues As Range
Dim rng As Range
Dim rngProd As Range
Dim iRng As Integer
Set rngProd = ActiveSheet.Range("B5:B20") ' Produkte Bereich
For Each rng In Target.Cells
If Not Intersect(rngProd, rng) Is Nothing Then ' Im Bearbeitungsbereich?
If rng.Formula = "" Then ' Kein Produkt ausgewählt?
' Alle weiteren Angaben in den Spalten C bis L löschen
For Each rngValues In ActiveSheet.Range(ActiveSheet.Cells(rng.Row, 3), ActiveSheet.Cells(rng.Row, 12)).Cells
If Not Left(rngValues.Formula, 1) = "=" Then
rngValues.Formula = ""
End If
Next
End If
End If
Next
End Sub
Erläuterung:
Eingaben werden nur im Bereich B5 bis B20 ausgewertet.
Wenn in diesem Bereich ein Inhalt gelöscht (=kein Produkt ausgewählt) wird, werden in den Spalten C bis L alle Inhalte gelöscht. Hierbei bleiben Formeln erhalten. In den Spalten C bis L befinden sich weitere Angaben wie Menge, Rabatt, ... .
Die geänderte Excel-Datei wird Ihnen auch per Email zugesandt.
VG, BigBen
|