5.1k Aufrufe
Gefragt in Tabellenkalkulation von aipaip Einsteiger_in (83 Punkte)
Hallo zusammen!

Ich habe folgendes Problem:
Ich habe eine Datei, die zwei Tabellenblätter (TBB) beinhaltet. Im ersten wird eine E>ingabe gemacht, im zweiten wirde die Eingabe durch Makros verarbeitet.
Ich möchte jetzt gerne, dass beim Wechsel auf das 2.TBB das Makro "ausblenden" (für TBB 2) ausgeführt wird.
Bei Wechsel zurück auf TBB1 soll das Makro "einblenden" (auch für TBB2) ausgeführt werden.
Ziel ist, dass bei Wechsel auf TBB2 abhängig von der Eingabe in TBB1 die Zeilen ausgeblendet werden und bei Wechsel zurück auf TBB1 alle Zeilen in TBB2 wieder eingeblendet werden.

Kann mir hierbei jemand behilflich sein?

Viele Grüße

Jochen

4 Antworten

0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Jochen,

rufe aus dem Woksheet_Activate Ereignis des 2. Tabellenblattes das eine und aus dem Worksheet_Deactivate Ereignis des 2. Tabellenblattes das andere Makro auf.

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

ich denke, die beiden Arbeitsmappen-Ereignisse Workbook_SheetDeactivate und Workbook_SheetActivate könnten Dir weiterhelfen, wenn Du dort die entsprechenden Befehle für das Ein- bzw. Ausblenden reinschreibst. Ggf. musst Du eine globale (Public) variable benutzen, um Dir irgendwelche Zustände zu merken.


Option Explicit

Public VonTbl

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
MsgBox "von " & VonTbl & " nach " & CStr(Sh.Name), , "Tabellenblattwechsel"
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
VonTbl = CStr(Sh.Name)
End Sub


Habe das Ganze mal in ein kleines Beispiel gepackt. Kopiere den Text in den VBA-Code-Bereich der Arbeitsmappe (nicht einer Tabelle!) und entscheide, ob Dir dieser Ansatz weiterhilft, wenn statt der MsgBox ein "richtiges" Makro ausgeführt wird.

MfG Charlotte_S
0 Punkte
Beantwortet von
Sorry,

habe die Typdeklaration vergessen, ist natürlich String:

Public VonTbl As String

Charlotte_S
0 Punkte
Beantwortet von aipaip Einsteiger_in (83 Punkte)
Hallo Charlotte,

ich habe mich mittlerweile selbst versucht und das funktioniert sogar!
Meine Lösung sieht folgender Maßen aus:

Private Sub worksheet_Activate()
'Zeilen Ausblenden
Dim i As Long
Dim y As Long

ActiveSheet.UsedRange.Select
y = Selection.Rows.Count
For i = 6 To 205
If Cells(i, 206).Value = "1" _
Then Rows(i).EntireRow.Hidden = True
Next i

'Spalten Ausblenden
Dim j As Long
Dim z As Long

ActiveSheet.UsedRange.Select
z = Selection.Columns.Count
For j = 6 To 205
If Cells(206, j).Value = "1" _
Then Columns(j).EntireColumn.Hidden = True
Next j


End Sub


Private Sub worksheet_Deactivate()
'Zeilen einblenden
Dim i As Long
Dim y As Long

ActiveSheet.UsedRange.Select
y = Selection.Rows.Count
For i = 6 To 205
Rows(i).EntireRow.Hidden = False
Next i

'Spalten einblenden
Dim j As Long
Dim z As Long

ActiveSheet.UsedRange.Select
z = Selection.Columns.Count
For j = 6 To 205
Columns(j).EntireColumn.Hidden = False
Next j

End Sub

Trotzdem vielen Dank für deine Mühe!
Werde deine Lösung auch Testen!

Gruß

Jochen
...