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

Markieren, wenn 0 in Zelle

Markieren, wenn 0 in Zelle
02.04.2008 15:53:10
Markus
Hallo Zusammen,
in meiner Tabelle sollen die Zeilen markiert werden, in der in Spalte "F2:F1140" eine "0" steht. Wie bekomme ich dies in ein Makro verpackt?
Hilfe!
Gruß
Markus

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Wieso VBA, wenn es...
02.04.2008 16:01:00
Renee
mit einer einfachen bedingten Formatierung geht:

=Formel ist =$F1=0  Muster was-weiss-ich-für-eine-Farbe


GreetZ Renée

AW: Wieso VBA, wenn es...
02.04.2008 16:05:59
Markus
Hallo Renée,
danke für deine Antwort, aber ich will die Zellen nicht farbig haben, sondern "markiert", was ich im Makro mit select mache.
Gruß
Markus

Dann Autofilter und select... (owT)
02.04.2008 16:08:31
Renee

AW: Dann Autofilter und select... (owT)
02.04.2008 16:35:15
Markus
Es soll aber ein Makro werden .....
Viel Grüße
Markus

Profi => Makrorekorder....
02.04.2008 17:01:00
Renee

AW: Profi => Niiiiit VBA, Renee
02.04.2008 22:32:00
Gerd
Hallo Markus,
bei 1100 Zeilen kann man schon mal in die Trikkis greifen.
Wenn 's nur ein paar Zellen wären, würde es eine einfache "For ... each"-Schleife tun.
Unterstellt, es sind keine Formeln im Bereich:

Sub Schweizer_Recorder()
Dim R As Range
Set R = Range("F2:F1140")
R.Replace "0", "TRUE", xlWhole, xlByRows
Set R = Range("F2:F30").SpecialCells(xlCellTypeConstants, xlLogical)
R.Select
R.Replace "TRUE", "0", xlWhole, xlByRows
End Sub


Den Code würde ich einem Button zuweisen. Denn bei einem Klick in eine Zelle ist die
Markierung schon wieder weg.
Gruß Gerd

Anzeige
AW: Profi => Niiiiit VBA, Renee
03.04.2008 11:06:00
Markus
Hallo Gerd,
danke für deine Antwort, aber leider bekomme ich immmer die Fehlermeldung "Keine Zellen gefunden" und es wird fett gemarkte Zeile markiert.
?
Gruß
Markus

Sub Schweizer_Recorder()
Dim R As Range
Set R = Range("F2:F1140")
R.Replace "0", "TRUE", xlWhole, xlByRows
Set R = Range("F2:F30").SpecialCells(xlCellTypeConstants, xlLogical)
R.Select
R.Replace "TRUE", "0", xlWhole, xlByRows
End Sub


AW: Profi => Niiiiit VBA, Renee
03.04.2008 21:17:44
Daniel
HI
diese SpecialCells-Methode hat 2 Nachteile:
1. wenn nichts gefunden wird, gibts nen Fehler
2. da mit Relace gearbeitet wird, funktioniert es nur bei Konstantwerten, wenn die 0er durch Formeln erzeugt werden, versagt diese Methode.
als Lösung würde sich folgendes anbieten:
- Autofilter verwenden (kannst du mit dem Recorder aufzeichnen) und dann mit Range("F2:F1140").SpecialCells(xlcelltypevisible).Select selektieren"
oder: Daten nach Spalte F sortieren und dann erste Zelle mit 0 ermitteln und Selektion mit der Anzahl erweiteren:

Range("F1").currentregion.sort key1:=Range("F2"), header:=xlyes
Range("F:F").find(What:=0, lookat:=xlwhole, lookin:xlvalues).Resize(Worksheetfunction.countif(Range("F:F"), 0),1).select


oder nach dem Sortieren erste und letze Zelle finden und selektieren:


set Zelle1 = Range("F:F").find(What:=0, lookat:=xlwhole, lookin:xlvalues)
set Zelle2 = Range("F:F").find(what:=0, after:=Range("F1141"), , lookat:=xlwhole, lookin: _
xlvalues, serarchdirection:=xlprevious)
Range(Zelle1, Zelle2).select


Gruß, Daniel

Anzeige
AW: "0" markieren
03.04.2008 21:43:28
Gerd
Hallo Daniel,
zu 1. siehe weiter unten
zu 2. siehe weiter oben
3. Es muss nicht sortiert werden
Gruß Gerd

AW: Markieren, wenn 0 in Zelle
03.04.2008 19:53:00
Gerd
Hallo Markus,
ja, da fehlte noch die Fehlerroutine für "nix gefunden". Und bei der Bezeichnung des Range
hatte ich auch gepennt :-)

Sub Schweizer_Recorder2()
Dim R As Range
Set R = Range("F2:F1140")
on error goto Ende
R.Replace "0", "TRUE", xlWhole, xlByRows
Set R = Range("F2:F1140").SpecialCells(xlCellTypeConstants, xlLogical)
R.Select
R.Replace "TRUE", "0", xlWhole, xlByRows
Ende:
End Sub


Gruß Gerd

Anzeige
AW: Markieren, wenn 0 in Zelle
04.04.2008 15:19:15
Markus
Hallo Gerd,
die Fehlermeldung ist leider immer noch die Gleiche.
Unter Office 2000 funktionierte folgendes Makro wirklich schnell und unproblematisch. Mit 2003 läuft garnichts mehr. Warum funktioniert das den nicht mehr?
Gruß
Markus
' *** Office 2000 ***
Dim r As Range
Dim ber As Range
Set ber = Intersect(UsedRange, Columns(57))
If ber Is Nothing Then Exit Sub
Application.ScreenUpdating = False
For Each r In ber
r.EntireRow.Hidden = (r.Value = 0)
Next r
Application.ScreenUpdating = True

AW: Markieren, wenn 0 in Zelle
04.04.2008 16:38:00
Gerd
Hi,
kaum zu glauben, dass das unter E2000 laufen soll. Lad mal ein Beispiel hoch.
mfg Gerd

Anzeige
AW: Markieren, wenn 0 in Zelle
04.04.2008 18:58:00
Daniel
Hi
also ein Fehler ist mal, UsedRange nicht alleine, sondern nur in Verbindung mit dem Sheets-Objekt verwendet werden kann, also:

Set ber = Intersect(ActiveSheet.UsedRange, Columns(57))


ein weiteres Problem ist, daß dein Code jede Zeile einzeln ausblendet, was sehr zeitintensiv ist.
der folgende Code sammelt die Auszublenden Zeilen in einer Rangevariable und blendet dann alle auf einmal aus, was idR deutlich schneller ist.


Sub test()
Dim r As Range
Dim ber As Range
Dim ausbl As Range
Set ber = Intersect(ActiveSheet.UsedRange, Columns(57))
If ber Is Nothing Then Exit Sub
Application.ScreenUpdating = False
For Each r In ber
If r.Value = 0 Then
If ausbl Is Nothing Then
Set ausbl = r
Else
Set ausbl = Union(ausbl, r)
End If
End If
Next r
If Not ausbl Is Nothing Then ausbl.EntireRow.Hidden = True
Application.ScreenUpdating = True
End Sub


allerdings verstehe ich nicht, warum du hier nicht einfach mit dem Autofilter arbeitest:


Columns(57).AutoFilter Field:=1, Criteria1:="0", Operator:=xlAnd


wenn dich der DropDown-Button des Autofilters stört, dann schau mal in der Hilfe nach, ich glaube, es gibt eine Option, diesen auszublenden.
Diese Option ist allerdings nur per Makro verfügbar.
Gruß, Daniel

Anzeige
AW: Markieren, wenn 0 in Zelle
04.04.2008 20:06:00
Gerd
Hallo Markus,
Du antwortetes mit der Feststellung, dass mein Code, der bei mir (in xl2000) prima läuft,
bei dir nicht funktioniert. Dann solltest die Argumente der Replace-Methode in der
xl2003 VBA-Hilfe abgleichen.
Ansonsten hatte ich vermerkt, dass mein Code die "0" en aus Formeln nicht findet.
Allerdings spielt die konkrete Ausgestaltung der Tabelle (Zahlenformate, Formeln, Filter, Objekte)
mitunter schon eine Rolle.
Was dein Code mit deiner ursprünglichen Fragestellung zu tun hat, ist für mich nur schwer
nachvollziehbar. Von der Spalte "57" hatte ich zuvor nichts gelesen.
Der "UsedRange" ist zugegebenermaßen schnell geschrieben u. argumentlos, aber sehr anfällig.
Ich schlage Dir vor, eine Datei, ggf. mit vom Umfang her abgespeckter Tabelle, hochzuladen u.
einfach einigermaßen vollständig zu beschreiben, was Du erreichen möchtest.
Gruß Gerd (mit L - ohne Wertung, nur zur Unterscheidung)
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige