Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
888to892
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
888to892
888to892
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

gefilterte werte 0 setzten

gefilterte werte 0 setzten
18.07.2007 16:36:00
ulleh
Hallo zusammen,
bräuchte wiedereinmal eure hilfe
Code:

Sub Aendern()
Worksheets("Seite1").Select
Range("Tabelle").Select
Selection.AutoFilter Field:=4, Criteria1:="Maus", Operator:=xlAnd
For Each Cell In Range("Tabelle").CurrentRegion.SpecialCells(xlCellTypeConstants, 1)
If Cell.Column = 6 Then Cell.Value = 0
Next Cell
For Each Cell In Range("Tabelle").CurrentRegion.SpecialCells(xlCellTypeConstants, 1)
If Cell.Column = 7 Then Cell.Value = 0
Next Cell
Selection.AutoFilter
Range("A1").Select
End Sub


Also der Code soll folgendes machen. Den Range "Tabelle" nach " Maus" filtern.. und dann eigentlich die werte in den spalten 6 und 7, "0" reinsetzen.
Wenn das aber durchläuft, setzt er die Werte von Maus auch auf 0.
Habe gedacht das es mit CurrentRegion gut läuft (nachträglich eingefügt.. Mr. Google meinte ich sollte das hinzufügen)... aber geht trotzdem nicht.
Hat hier jemand ne Idee?
Danke

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: gefilterte werte 0 setzten
18.07.2007 18:10:30
Luschi
Hallo
ich habe mal meine Lösungs-Variante auf Dein Beispiel-Problem umgesetzt.
Sieht auf dem 1. Blick vielleicht etwas umständlich aus; aber meine Vba-Programme müssen auch unter Excel2000 laufen.
Da kann ich mich auf definierte Konstanten, die es erst ab XP/2003/2007 existieren, leider nicht verlassen.
Habe noch ein paar Kommentare dazugesetzt:

Sub Aendern()
Dim ws As Worksheet, cell_1 As Range, cell_2 As Range, cell_3 As Range
Set ws = ThisWorkbook.Worksheets("Seite1")
ws.Select
If ws.AutoFilterMode Then
''falls Autofilter aktiv, dann abschalten
ws.Cells.AutoFilter
End If
Range("Tabelle").Select
Selection.AutoFilter Field:=4, Criteria1:="Maus", Operator:=xlAnd
'Autofilter-Bereich auslesen
Set cell_2 = ws.AutoFilter.Range
'1. Zelle im Autofilter um die Überschriften-Zeile des Autofilters auszulesen
Set cell_3 = cell_2.Resize(1, 1)
For Each cell_1 In cell_2
'1. Zeile im Autofilter nicht berücksichtigen
If cell_1.Row  cell_3.Row Then
'Zelle darf keine Formel enthalten
If Not cell_1.HasFormula Then
'6. und 7. Spalte und die Zeile darf nicht unsichtbar sein
If cell_1.Column = 6 And (Not cell_1.EntireRow.Hidden) Then
cell_1.Value = 0
End If
If cell_1.Column = 7 And (Not cell_1.EntireRow.Hidden) Then
cell_1.Value = 0
End If
End If
End If
Next cell_1
Set cell_1 = Nothing
Set cell_2 = Nothing
Set cell_3 = Nothing
ws.Cells.AutoFilter
ws.Range("A1").Select
Set ws = Nothing
End Sub

Gruß von Luschi
aus klein-Paris

Anzeige
AW: gefilterte werte 0 setzten
18.07.2007 20:26:26
Daniel
Hi
Probiers mal mit folgendem Zusatz:
For Each Cell In Range("Tabelle").CurrentRegion.SpecialCells(xlCellTypeConstants, 1).specialcells(xlcelltypevisible)
Gruß, Daniel

AW: gefilterte werte 0 setzten
19.07.2007 10:38:42
ulleh
Also Klappt wunderbar mit dem visible... auch der "Riesen Code" klappt prima --> 1000 mal DANKE
Mittlerweile haben sich die Anforderungen geändert( man man ).
Das Ganze soll nun OHNE AutoFilter geschehen. mein Code sieht folgendermaßen aus:

Sub Aendern()
Flag = False
Worksheets("Seite1").Select
For Each Cell In Range("TabelleDB").SpecialCells(xlCellTypeConstants, 1)
If Cell.Column = 4 And Cell.Value  "Maus" Then
Flag = True
If Flag = True Then Cell.Offset(0, 2).Value = 0
If Flag = True Then Cell.Offset(0, 3).Value = 0
End If
Next Cell
Range("A1").Select
End Sub


(Ist nur ein Teil eines Codes, nicht wundern warum da


Sub etc. steht. Flag etc wurden schon deklariert) Klappt irgendwie trotzdem nicht. Also der  _
setzt gar nichts auf 0.. Weis jemand Warum?

Anzeige
AW: gefilterte werte 0 setzten
20.07.2007 23:15:24
Daniel
Hi
ich sehe grad auch nicht, warum es nicht funktionieren sollte.
Höchsten, daß die Felder, die "Maus" enthalten nicht in Spalte D, sondern in einer anderen Spalte stehen.
allerdings enthält ein Code ziemlich viel überflüssiges und unnötige Schleifen.
Im prinzip soll ja nicht jede Zelle, sondern nur die Zellen der 4. Spalte auf "Maus" überprüft werden, daher müsste dashier ausreichen: (vorraussetztung ist, das der Range("TabelleDB") in Spalte A beginnt).

Sub Aendern()
Worksheets("Seite1").Select
For Each Cell In Range("TabelleDB").columns(4).SpecialCells(xlCellTypeConstants, 1)
If Cell.Value  "Maus" Then
Cell.Offset(0, 2).Value = 0
Cell.Offset(0, 3).Value = 0
End If
Next Cell
Range("A1").Select
End Sub


und noch ein Tip, wenn du eine boolsche Variable in einer If-Abfrage abprüft, dann liefert:
if Flag = true then...
das gleiche Ergebnis wie
if Flag then ...
außderdem würd ich nicht "Cell" als Variablenname verwenden, das liegt zu dicht am VBA-Begriff "Cells" und könnte zu verwechslungen führen.
dann lieber "Zelle" oder noch besser "rngZelle", damit man weiß, daß diese Variable für ein RANGE-Objekt steht.
Gruß, Daniel

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige