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
=Formel ist =$F1=0 Muster was-weiss-ich-für-eine-Farbe
GreetZ Renée
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
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
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
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
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