Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1588to1592
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

datenlöschen

datenlöschen
31.10.2017 15:21:02
Sonja
Einen schönen Halloween :-)
ich habe 57 Tabellenblätter mit Kw1 bis Kw52 dann KWalt,Kwarchiv und Auswertung
https://www.herber.de/bbs/user/117326.xlsm
In der Auswertung möchte ich jetzt folgendes tun.
Ich mach den filter beim Tabellenblatt Auswertung auf Bestand 0 dann soll ein VBA ( Button löschen ) alle Tabellenblätter mit KW.... prüfen ob die Artikelnummmer vorhanden ist und wenn ja die Zeile löschen und nachrutschen.
Wäre sowas möglich ?
Es sind immer so viele Daten und ich muß sie immer manuell löschen.
Danke schönnnnnnn :-)

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: erster Ansatz
31.10.2017 16:15:50
Fennek
Hallo,
der Code ist nur ein Anfang und bedarf noch einiger Ergänzungen:

Sub Main
dim rng as range
for each Ar in sheets("Auswertung").usedrange.columns(1).specialcells(12).areas
if isnumeric( cint(ar)) then
for each Sh in Sheets
if Sh.name  "Auswertung" then
set rng = sh.columns(1).find(cint(Ar))
if not rng is nothing then
rng.interior.color = vbyellow
msgbox rng.address
end if
end if
next Sh
end if
next Ar
End Sub
mfg
(nur in der Demo-Datei testen)
Vorsicht: "ar" versus "Ar"
31.10.2017 16:31:55
Michael
Hi,
also immer brav mit "Option explicit" und alles deklarieren...
Schöne Feiertage,
Michael
Anzeige
siehe Michael
31.10.2017 17:50:07
Werner
Hallo Sonja,
da hat Michael doch schon darauf hingewiesen.
Im Code mal Ar und mal ar
Ändere mal ar auf Ar
Gruß Werner
AW: siehe Michael
31.10.2017 22:18:58
Sonja
Hallo ,
das habe ich gemacht, kommt immer noch der Fehler wenn ich Ar statt ar mach.
Danke
entweder mit....
01.11.2017 08:06:10
Crazy
Hallo
entweder du arbeitest mit Option Explicit!
dann musst du auch alle Variablen deklarieren
oder du lässt Option Explicit wech! (nicht zu empfehlen)
wenn es dann wech ist, dann kommt ein anderer Fehler
und den bekommst du wech wenn du die entsprechende Zeile in dieses änderst
If IsNumeric(ar) Then
MfG Tom
Anzeige
AW: entweder mit....
01.11.2017 08:39:09
Sonja
Hallo Tom,
Leider habe ich in VBA keine Ahnung :(
Was muss ich da genau machen ?
AW: xl geprüft
01.11.2017 08:48:53
Fennek
Hallo,
gestern war der PC "down", den Code hatte ich mit LO auf einem Tablet entwickelt. (nix gut)
Der folgende Code ist mit xl geprüft, der Befehl zum Löschen ist (noch) auskommentiert, aber einmal getestet.

Sub iFen()
Dim rng As Range
For Each Ar In Sheets("Auswertung").UsedRange.Columns(1).SpecialCells(12).Areas
Debug.Print Ar
If IsNumeric(Ar) Then
For Each Sh In Sheets
If Sh.Name  "Auswertung" Then
Set rng = Sh.Columns(1).Find(CInt(Ar))
If Not rng Is Nothing Then
rng.Interior.Color = vbYellow
'#### löschen
'rng.EntireRow.Delete
End If
End If
Next Sh
End If
Next Ar
End Sub
mfg
Anzeige
AW: Ergänzung
01.11.2017 09:09:04
Fennek

Sub iFen()
Dim rng As Range
For Each Ar In Sheets("Auswertung").UsedRange.Columns(1).SpecialCells(12).Areas
If Ar.Count > 1 Then MsgBox "prüfen: " & Ar: Exit Sub
If IsNumeric(Ar) Then
For Each Sh In Sheets
If Sh.Name  "Auswertung" Then
Set rng = Sh.Columns(1).Find(CInt(Ar))
If Not rng Is Nothing Then
rng.Interior.Color = vbYellow
'#### löschen
'rng.EntireRow.Delete
End If
End If
Next Sh
End If
Next Ar
End Sub

AW: Ergänzung
01.11.2017 09:26:25
Sonja
Hallo Fennek,
leider kommt eine Fehlermeldung beim Code:
das wird Gelb Then MsgBox "prüfen: & Ar"
Danke
AW: Ar.Cells(1)
01.11.2017 09:32:05
Fennek
Hallo,
in der Beispiel-Datei kommt das nicht vor, als Hilfe um den Artikel zu identifieren sollte die genannte Ergänzung helfen.
mfg
(also:
If Ar.Count > 1 Then MsgBox "prüfen: " & Ar.cells(1): Exit Sub
und eine Kontrolle/Berbeitung von Hand)
Anzeige
nochmal Beispiel
01.11.2017 09:50:34
Sonja
Hallo Fennek,
danke :-)
ich habe jetzt mal mehrere Daten aber die werden nicht gelöscht. Ich habe jetzt mal die Datei,
https://www.herber.de/bbs/user/117339.xlsm
und klicke bitte mal auf löschen, leider bleiben diese drin. Der Bestand hat nichts damit zu tun. Wichtig ist, das er löscht was der Filter ( Auswertung ) hergibt. Wenn ich alle mache,dann müsste er alles löschen bis auf mein Tabellenblatt Auswertung und alt.
Danke Dir. Bin froh das du mir Hilfst :-)
AW: wird langsam unübersichtlich
01.11.2017 10:23:04
Fennek
Hallo,
aus Sicherheitsgründen öffne ich fremde xlsm-Dateien nur mit LO. In LO kann ich nicht sehen, ob der Button "Lösche" mit dem Makro "iFen" verbunden ist. (Zum Testen nutze ich den Einzelsschrittmodus in VBE)
Der Codeenthält nicht mehr die Prüfung, ob Ar.Count > 1, da ich die Orinaldatei nicht kenne, kann ich nicht beurteilen, ob dieser Fall überhaupt auftreten kann.
mfg

Allgemeine Probleme in Foren:
1. Stufe: schlechte Beispieldatei (in deinem Fall "super")
2. Stufe: die FRagestellerin versteht den Code nicht (?)
3. Stufe: der Transfer in die Orinaldatei macht Probleme (sehr häufig)

Anzeige
AW: xl geprüft
01.11.2017 09:10:17
Sonja
Hallo Fennek,
es funktioniert :-)
aber löscht er es auch die Tabellenblätter ohne KW raus?
Den er soll nämlich nur die Tabellenblätter löschen wenn ein KW.... davor steht.
Weil zwei Tabellenblätter ( Stammdaten, Daten )sind die Daten auch enthalten aber da dürfen sie nicht gelöscht werden.
Dankeschön
Anzeige
AW: ungeprüft
01.11.2017 09:35:06
Fennek
anstelle von

If Sh.Name  "Auswertung" Then
dann das
If instr(1,Sh.Name, "KW") > 0 Then

AW: datenlöschen
01.11.2017 10:23:47
Gerd
Hallo Sonja,
bitte nicht gleich in der Originaldatei testen.
Option Explicit
Sub Hauweg()
Dim rng As Range, Ar As Range, Cell As Range, Sh As Object
For Each Ar In Sheets("Auswertung").UsedRange.Columns(1).SpecialCells(12).Areas
For Each Cell In Ar.Cells
If IsNumeric(Cell) Then
For Each Sh In Sheets
If InStr(1, Sh.Name, "KW") > 0 Then
Set rng = Sh.Columns(1).Find(CInt(Cell))
If Not rng Is Nothing Then
rng.Interior.Color = vbYellow
'#### löschen
rng.EntireRow.Delete
End If
End If
Next Sh
End If
Next Cell
Next Ar
End Sub

Gruß Gerd
Anzeige
AW: es geht noch besser
01.11.2017 12:21:55
Fennek
Hi Gert,
wie wäre es mit der Frage, ob eine Artikelnummer pro KW mehrfach vorkommen kann? Dann müßte "Range.Find" etwas "aufgebohrt" werden müssen, um alle zu finden, am besten von unten nach ober.
mfg
AW: es geht noch besser
01.11.2017 12:37:54
Sonja
Hallo zusammen,
es kann sein ( sollte aber nicht) das die Artikel öfters vorkommen .
AW: datenlöschen
01.11.2017 13:42:16
Sonja
Hallo,
Leider kommt bei der original Datei ( kopie)
ein Überlauf 6 Fehler und Set eng = Sh..... wir gelb.
AW: datenlöschen
01.11.2017 14:13:58
Gerd
Hallo,
du musst vermutlich sicherstellen, dass nicht nach leeren Zellen gesucht wird.
If Not IsEmpty(Cell) Then ...
Gruß Gerd
AW: datenlöschen mit RemoveDuplicates
01.11.2017 14:24:55
Daniel
Hi
wenn du alle Artikelnummern löschen willst, die im Blatt "Auswerten" gefiltert sind, dann ggf mit diesem Code:
Sub LöschenGefiltert()
Dim Zelle As Range
Dim FO As String
Dim LöschArtNr As String
Dim sh As Worksheet
'--- zu löschende Art-Nummern in Variable sammeln
For Each Zelle In Sheets("Auswertung").UsedRange.Columns(1).SpecialCells(xlCellTypeVisible). _
Cells
LöschArtNr = LöschArtNr & "|" & CStr(Zelle.Value)
Next
'--- Formel zum Kennzeichnen der zu löschenden Daten erstellen
FO = "=IF(isnumber(find(""|""&RC1&""|"",""" & LöschArtNr & """)),0,Row())"
'--- Schleife über alle Blätter und löschen
For Each sh In ThisWorkbook.Worksheets
If sh.Name Like "KW*" Then
'--- eventuell vorhandenen Autofilter ausschalten
On Error Resume Next
sh.ShowAllData
On Error GoTo 0
'--- Zeilen löschen
With sh.UsedRange
With .Columns(.Columns.Count + 1)
.FormulaR1C1 = FO '--- mit Formel markieren
.Cells(1, 1).Value = 0 '--- in Überschrift muss 0 stehen
.EntireRow.RemoveDuplicates .Column, xlNo '--- Zeilen löschen
.ClearContents '--- Aufräumen
End With
End With
End If
Next
End Sub
beachte, dass die Anzahl der Artikelnummern, die gelöscht werden sollen, hier limitiert ist (sie dürfen zusammen nicht mehr als 1000 Zeichen lang sein)
Wenn du viele Artikelnummern hast die gelöscht werden sollen, müsste man ggf eine anderer Kennezeichnungsformel verwenden.
Müssen es unbedingt die gefilterten Daten sein?
könnte man nicht auch einfach sagen, lösche alle Artkielnummern, bei denen in der Auswertung die Anzahl 0 steht, ohne berücksichtigung der Filterung?
Dann könnte man auch eine einfachere Formel einsetzen, und die Anzahl der zu löschenden Nummern wäre nicht mehr limitiert.´
Ansonsten habe ich das mit deiner Beispieldatei getestet und es funktioniert
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige