AW: Danke aber die Frage
14.12.2006 22:41:40
fcs
Hallo Walter,
nein, es werden keine Daten in die Tabelle1 kopiert. Der Zellinhalt in Spalte C der Tabelle 1 wird jewils in einem Rutsch mit den Inhalten der Spalte C in den TAbellen 2 und 4 abgeglichen
Gruss
Franz
Private Sub CommandButton1_Click()
Dim WS1 As Worksheet, WS2 As Worksheet, WS3 As Worksheet, BereichTab4 As Range, BereichTab3 As Range
Dim iZeile As Long, LetzteZeile As Long
'Variablen für Tabellen die entsprechenden Tabellen zuweisen
Set WS1 = ThisWorkbook.ActiveSheet 'Tabelle mit dem Button1
Set WS2 = ThisWorkbook.Worksheets("Tabelle3")
Set WS3 = ThisWorkbook.Worksheets("Tabelle4")
'Bereich festlegen mit den Werten in Tabelle 3, die mit den Werten in Tabelle 1 verglichen werden sollen
Set BereichTab3 = WS2.Range(WS2.Cells(5, "C"), WS2.Cells(WS2.Rows.Count, "C").End(xlUp))
'Bereich festlegen mit den Werten in Tabelle 4, die mit den Werten in Tabelle 1 verglichen werden sollen
Set BereichTab4 = WS3.Range(WS3.Cells(5, "C"), WS3.Cells(WS3.Rows.Count, "C").End(xlUp))
'Automatische Berechnung und Ereignismakros deaktivieren, insbesondere dann erforderlich, wenn _
die Tabellen umfangreiche Berechnungen automatisch auf Zellwertänderungen _
reagierende Makros enthalten.
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With
With WS1
'Ermitteln der letzten Zeile in Spalte C, die noch Werte emthält
LetzteZeile = .Cells(.Rows.Count, "C").End(xlUp).Row
'Zellen in Tabelle 1 Spalte C von der Letzten bis zue 5. Zeile mit den Werten in den _
anderen Tabellen vergleichen
For iZeile = LetzteZeile To 5 Step -1
' In der If-Bedingung wird gezählt, wie oft der Begriff in der Zelle in Tabelle 1 in den _
beiden Bereichen in Tabelle 3 und 4 vorkommt. Bei 0 wird in Tabelle 1 der Zellbereich gelöscht
If Application.WorksheetFunction.CountIf(BereichTab3, .Cells(iZeile, "C").Value) + _
Application.WorksheetFunction.CountIf(BereichTab4, .Cells(iZeile, "C").Value) = 0 Then
.Range(.Cells(iZeile, "C"), .Cells(iZeile, "H")).Delete Shift:=xlShiftUp
End If
Next iZeile
End With
'Berechnung wieder auf Automatisch stellen und die Ereignismakros wieder aktivieren
With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub