ich bin absoluter Anfänger im Makro / Programmierungsbereich... daher ganz offen gefragt:
Wie muss ich folgendes Makro abändern, sodass es nur in dem ersten Tabellenblatt (Name: "Protokoll") & nur in dem Zellbereich A9:K109 ganze Zeilen ausblendet, in denen die Spalte C leer ist?
Ursprüngliches Makro:
Sub FehlerUndLeereAusblenden() Dim wksBlatt As Worksheet
On Error Resume Next For Each wksBlatt In ThisWorkbook.Worksheets wksBlatt.Cells(1, 1).CurrentRegion.AutoFilter Field:=3, Criteria1:="<>#N/A" Next wksBlatt On Error GoTo 0 End Sub
Sub ProtokollLeereAusblenden() On Error Resume Next Worksheets("Protokoll").Range("A9:K109").AutoFilter Field:=3, Criteria1:="<>" On Error GoTo 0 End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28 • Lars1904
(10.04.2018, 15:21)Lars1904 schrieb: Leere Zeilen blendet er damit aus, allerdings leider nicht in dem angegebenen Bereich sondern über das ganze Tabellenblatt :(
Es können nur komplette Zeilen ausgeblendet werden, falls Du das meintest. Das ist einfach so!
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28 • Lars1904
ich habe jetzt mal ein bisschen rumgespielt und das Problem nun manchmal auch gehabt, dass sich der AF-Bereich automatisch (ungewollt) erweitert. Auch bei manuellem Einschalten des AF. Es liegt also nicht daran, dass es per VBA gesteuert wird.
in welchem Bereich befinden sich deine Daten? Wo ist deine Überschriftenzeile? Falls die Überschriften sich in Zeile 9 befinden, könntest Du es mal so versuchen
Code:
Sub ProtokollLeereAusblenden() Dim vntBereich As Variant Dim lngZeile As Long
On Error Resume Next With Worksheets("Protokoll") lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row If lngZeile > 109 Then vntBereich = .Range("A110:K" & lngZeile).Value .Range("A110:K" & lngZeile).ClearContents End If .Range("A9:K109").AutoFilter Field:=3, Criteria1:="<>" If Not IsEmpty(vntBereich) Then .Range("A110").Resize(lngZeile - 109, 11).Value = vntBereich End With On Error GoTo 0 End Sub
Gruß Stefan Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28 • Lars1904
ich habe mal eine anonymisierte Datei mit hochgeladen.
Zur Erklärung: Die Themen
1.1 Thema 1 1.2 Thema 2 1.3 Thema 3 ... etc. ...
werden manuell eingetragen.
Ich möchte in diesem Fall gerne per Knopfdruck (Makro?) die Zeilen im Bereich 9 bis 109 ausblenden in denen in der Spalte G nichts steht, da die restlichen Zeilen lediglich als Platzhalter dienen und es nur in seltenen Fällen so viele Tagespunkte gibt. Wichtig ist, dass dadurch der untere Bereich ab Zeile 110 unverändert bleibt.
Anders formuliert:
Falls eine Tagesordnung nur aus... 1.1 Thema 1 [in Zeile 11] 1.2 Thema 2 [i][in Zeile 12][/i] 1.3 Thema 3 [i] [in Zeile 13] [/i]...besteht, sollen bei Knopfdruck nur noch die Zeilen 11, 12 und 13 in dem Bereich (9-109) stehen bleiben und alle anderen (also: 9 + 10 & 14 bis 109) automatisch ausgeblendet werden...
Ich hoffe mein Anliegen wird dadurch klarer...
Vielen lieben Dank!
PS: Der untere Teil (ab Zeile 110) bedarf keiner weiteren Bearbeitung. Hierfür habe ich bereits für die gegebenen Zwecke ein passendes Makro.