3.9k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,

Im Arbeitsblatt 2 sollen alle Zeilen die ein „x“ in Spalte A enthalten ausgeblendet werden. Mit dieser Formel funktioniert es nur, wenn ich das „x“ direkt Eingebe.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
If Cells(Target.Row, 1) = "x" Then
Rows(Target.Row).EntireRow.Hidden = True
End If
End If
End Sub

Wenn ich aber über eine Funktion von Arbeitsblatt 1 aus das „x“ auf Arbeitsblatt 2 setze (z.B. =wenn(Arbeitsblatt1!A1=““;“x“), funktioniert es nicht.

Danke im Voraus
Gruß
Jupp

13 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Jupp,

dein Makro wird auch nur ausgeführt, wenn du ein X in dein Arbeitsblatt einfügst (das siehst du an Worksheet_Change).

Kopiere das folgende Makro in ein Modul

Sub ausblenden()

Dim zeile As Long

For zeile = 1 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
If Cells(zeile, 1) = "x" Then Rows(zeile).EntireRow.Hidden = True
Next zeile

End Sub


Hiermit werden alle Zeilen ausgeblendet, in denen in Zeile A ein x steht.

Gruß

M.O.
0 Punkte
Beantwortet von
Danke für die Hilfe! Das Ausblenden funktioniert jetzt. Aber wie blende ich die Zeile wieder ein, wenn kein „x“ mehr in der Ausgeblendeten Zeile steht?

Gruß
Jupp
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Jupp,

dann versuch es mal so:

Sub ausblenden()

Dim zeile As Long

For zeile = 1 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
If Cells(zeile, 1) = "x" Then
Rows(zeile).EntireRow.Hidden = True
else
Rows(zeile).EntireRow.Hidden = False
End if
Next zeile

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von
Vielen Dank, diese Antwort hat mein Ploblem gelöst.

Gruß
Jupp
0 Punkte
Beantwortet von
Ist es auch möglich, das Makro von Arbeitsblatt 2 automatisch zu aktualisieren? Habe es schon mit „Sub auto_open()“ versucht. Funktioniert aber nicht. Kann es daran liegen, dass ich das Arbeitsblatt 2 von Arbeitsblatt 1 aus ändere ("x" ein/ausblende)?

Gruß
Jupp
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Jupp,

kopiere das folgende Makro in das VBA-Projekt des Arbeitsblatts 2:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim zeile as long
If Target.Column = 1 Then
For zeile = 1 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
If Cells(zeile, 1) = "x" Then
Sheets("Tabelle1").Rows(zeile).EntireRow.Hidden = True
Else
Sheets("Tabelle1").Rows(zeile).EntireRow.Hidden = False
End If
Next zeile
End If
End Sub


Wenn im Arbeitsblatt 2 in Spalte A (If Target.Column=1) etwas geändert wird, dann wird das Makro ausgeführt und blendet die Zellen mit x ein- bzw. aus.
Falls dein Arbeitsblatt 1 anders als Tabelle1 heißt, musst du den Namen entsprechend anpassen.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.

Irgendwo hakt es noch. Ich versuche´s mal genauer zu erklären.
Auf dem Arbeitsblatt1 (Tabelle1) werden in den Zeilen der Spalte A Zahlen eingetragen. Diese Zahlen werden in der gleichen Zeile auf das Arbeitsblatt2 (Tabelle2) mit der Funktion z.B. für A1 =WENN(Tabelle1!A1=0;"x"; Tabelle1!A1) übertragen. Für A2 =WENN(Tabelle1!A2=0;"x"; Tabelle1!A2) usw. Jetzt sollen alle Zeilen im Arbeitsblatt2 mit „x“ automatisch ausgeblendet bzw. wenn das „x“ durch eine Zahl ersetzt wird eingeblendet werden.

Gruß
Jupp
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Jupp,

ich hoffe, ich habe dein Anliegen richtig verstanden:

schreibe in das Codemodul des 1. Tabellenblattes diesen Code
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Target.Column = 1 Then
Worksheets("Tabelle2").Rows(Target.Row).EntireRow.Hidden = Target <> "x"
End If
End If
End Sub

Bis später,
Karin
0 Punkte
Beantwortet von
Hallo Karin,

mit deinem Code werden die Zeilen bei jeder Zahleingabe ausgeblendet. Sie sollen aber nur bei x ausgeblendet werden und wenn das x durch eine Zahl ersetz wird, soll die Zeile wieder eingeblendet werden.

Gruß
Jupp
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Jupp,

dann ändere <> in =

Bis später,
Karin
...