Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1196to1200
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro Erweiterung

Makro Erweiterung
David
Hallo,
ich bräuchte eine kleine Erweiterung für mein Makro.
So funktioniert das Makro im Moment:
In der Tabelle "Master" sind in der Spalte H und I Einträge. In der Spalte H stehen teilweise nochmal die Namen der Benutzer die sich angemeldet haben. Nachdem sich der Benutzer angemeldet hat soll überprüft werden, ob in Spalte H sein Name steht (Info: Entweder steht sein Name da oder nichts).
- Falls ja, dann soll der Name mit der Spalte AF und AC der Tabelle "all_data" verglichen werden. Bei Ungleichheit soll der Datensatz gelöscht werden.
- Falls nein, dann soll Spalte I aus "Master" mit der Spalte AG aus "all_data" verglichen werden. Bei Ungleichheit soll der Datensatz gelöscht werden.
Ergänzung/Erweiterung:
Und zwar soll die Spalte J aus "Master" mit der Spalte AH aus der Tabelle "all_data" verglichen werden. Falls die Werte unterschiedlich sind dann löschen (wie bei den anderen auch).
Das ist der aktuelle Code in dem die Erweiterung eingefügt werden soll:
Private Sub CommandButton1_Click()
Dim rng As Range, rngLoeschen As Range, StatusCalc As Long
Dim objWs As Worksheet, lngJ As Long, objWsAll As Worksheet
Dim sSpalteH As String, sSpalteI As String
If Me.ComboBox1.ListIndex > -1 Then
Set rng = Sheets("Master").Range("Liste").Find(Me.ComboBox1.Text, lookat:=xlWhole)
If Not rng Is Nothing Then
If rng.Offset(0, 1) = Me.TextBox1.Text Then
intC = 0
If rng.Offset(0, 2)  "" Then
'Alle Blätter außer Übersicht ausblenden
For Each objWs In Me.Parent.Worksheets
If objWs.Name  "Übersicht" Then objWs.Visible = xlSheetVeryHidden
Next
'Blätter mit Zugriff für Name einblenden
For lngJ = 2 To 6
With rng.Offset(0, lngJ)
If .Text  "" Then
With Sheets(.Text)
.Visible = xlSheetVisible
.Activate
End With
End If
End With
Next
Set objWsAll = Worksheets("all_data")
sSpalteH = rng.Offset(0, 7).Text
sSpalteI = rng.Offset(0, 8).Text
With objWsAll
With Application
StatusCalc = .Calculation
If StatusCalc  xlCalculationManual Then .Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
.StatusBar = "Tabelle ""all_data"" wird aufbereitet"
End With
If sSpalteH = rng.Text Then
'Spalten AC und AF mit Wert in Spalte H vergleichen
For lngJ = Application.WorksheetFunction.Max( _
.Cells(.Rows.Count, 29).End(xlUp).Row, _
.Cells(.Rows.Count, 32).End(xlUp).Row) To 2 Step -1
If .Cells(lngJ, 29).Text = sSpalteH Or .Cells(lngJ, 32).Text = sSpalteH Then
'do nothing
Else
If rngLoeschen Is Nothing Then
Set rngLoeschen = .Cells(lngJ, 1)
Else
Set rngLoeschen = Application.Union(rngLoeschen, .Cells(lngJ, 1))
End If
End If
Next
Else
'Spalten AG mit Wert in Spalte I vergleichen
For lngJ = .Cells(.Rows.Count, 33).End(xlUp).Row To 2 Step -1
If .Cells(lngJ, 33).Text = sSpalteI Then
'do nothing
Else
If rngLoeschen Is Nothing Then
Set rngLoeschen = .Cells(lngJ, 1)
Else
Set rngLoeschen = Application.Union(rngLoeschen, .Cells(lngJ, 1))
End If
End If
Next
End If
If Not rngLoeschen Is Nothing Then
rngLoeschen.EntireRow.Delete
End If
With Application
If StatusCalc  .Calculation Then .Calculation = StatusCalc
.ScreenUpdating = False
.EnableEvents = False
.StatusBar = False
End With
End With
Else
For Each objWs In Me.Parent.Worksheets
objWs.Visible = xlSheetVisible
Next
End If
Else
intC = intC + 1
If intC 

Danke!
Beste Grüße,
David

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro Erweiterung
25.01.2011 00:14:28
fcs
Hallo David,
Frage:
Sollen die Löschungen in der Ergänzung unter bestimmten Bedingen erfolgen oder zusätzlich zu den bereits vorhandenen Löschungen?
Gruß
Franz
AW: Makro Erweiterung
25.01.2011 08:28:30
David
Hallo Franz,
danke für Deine Antwort.
Diese sollen zusätzlich erfolgen. Im Prinzip soll das Makro die verschiedenen Spalten auf Werte durchsuchen, mit den entsprechenden Spalten in der Tabelle "all_data" vergleichen und dann gegebenenfalls Löschen.
Ich schreib nochmal die Paarvergleiche auf die durchgeführt werden sollen:
Spalte H aus Tabelle "Master" mit Spalte AC & AF aus Tabelle "all_data" (ist bereits im Code)
Spalte I aus Tabelle "Master" mit Spalte AG aus Tabelle "all_data" (ist bereits im Code)
Spalte J aus Tabelle "Master" mit Spalte AH aus Tabelle "all_data" (Muss noch hinzugefügt werden)
Spalte K aus Tabelle "Master" mit Spalte AD aus Tabelle "all_data" (Muss noch hinzugefügt werden)
In der Tabelle "Master" kann in mehreren Spalten (H,I,J und K) ein Wert stehen, der mit den entsprechenden Spalten der Tabelle "all_data" verglichen werden soll.
Ich hoffe, ich konnte mich verständlich ausdrücken.
Beste Grüße,
David
Anzeige
AW: Makro Erweiterung
25.01.2011 08:48:09
David
Aktualisierung:

Die Paarvergleiche ändern sich wie folgt:
Spalte N aus Tabelle "Master" mit Spalte AC & AF aus Tabelle "all_data" (ist bereits im Code)
Spalte O aus Tabelle "Master" mit Spalte AG aus Tabelle "all_data" (ist bereits im Code)
Spalte P aus Tabelle "Master" mit Spalte AH aus Tabelle "all_data" (Muss noch hinzugefügt werden)
Spalte Q aus Tabelle "Master" mit Spalte AD aus Tabelle "all_data" (Muss noch hinzugefügt werden)
Danke!
AW: Makro Erweiterung
25.01.2011 22:18:49
fcs
Hallo David,
in der Text-Datei findest du den angepassten CommandButton-Code. Mangels Beispieldaten ungetestet.
Die eingefügten Zeilen hab ich mit Kommentaren gekennzeichnet.
Gruß
Franz
https://www.herber.de/bbs/user/73234.txt
Anzeige
AW: Makro Erweiterung
26.01.2011 11:40:08
David
Hi Franz,
nochmal danke.
Ich habe mal eine Beispieldatei hochgeladen. Ich glaube da stimmt etwas nicht, denn wenn ich z.B. "Person1" auswähle, wird nur in der Spalte AF die Person gesucht und gefunden aber in Spalte AC steht ebenfalls "Person1" die aber nicht angezeigt wird.
Kann man das so machen, dass einfach alle vier Spalten (N, O, P und Q) aus der Tabelle "Master" mit den Spalten AC, AF, AG, AH und AD aus der Tabelle "all_data" verglichen werden? Alles was nicht übereinstimmt wird gelöscht der Rest bleibt? Es kann auch sein, dass in mehreren Spalten der Tabelle "Master" Einträge sind, also z.B. in N, O und Q.
So sollen die Spalten verglichen werden.
"Master" Spalte N mit "all_data" Spalte AC, AF
"Master" Spalte O mit "all_data" Spalte AG
"Master" Spalte P mit "all_data" Spalte AH
"Master" Spalte Q mit "all_data" Spalte AD
Hier der Link zur Beispieldatei: https://www.herber.de/bbs/user/73244.xls
Ich hoffe, ich konnte mich einigermaßen verständlich ausdrücken.
Beste Grüße,
David
Anzeige
AW: Makro Erweiterung
27.01.2011 00:11:16
fcs
Hallo David,
machen kann man vieles. Ich hab mal 2 Varianten erstellt.
Variante 1: Die zu vergleichenden Spalten werden individuell verglichen ("Master" Spalte N mit "all_data" Spalte AC, AF usw.) ist eine der Bedingungen erfüllt, wird Zeile nicht gelöscht
https://www.herber.de/bbs/user/73264.txt
Variante 2: Alle Werte (ungleich Leerstring) in Master Spalten N bis Q werden in For-Next-Schleifen mit den Werten in den "all_data Spalten AC, AD, AF, AG und AH verglichen.
https://www.herber.de/bbs/user/73265.txt
Langfristig ist Variante 2 pflegeleichter, wenn Änderungen an den zu vergleichenden Spalten erforderlich sind.
Gruß
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige