Thema Datum  Von Nutzer Rating
Antwort
16.03.2024 19:49:56 Wolfgang
NotSolved
17.03.2024 00:44:49 Gast25455
NotSolved
Rot VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.
17.03.2024 01:21:14 Gast67805
NotSolved
17.03.2024 01:39:35 Gast95781
NotSolved
17.03.2024 09:39:20 Gast89529
NotSolved
17.03.2024 11:57:38 ralf_b
NotSolved
17.03.2024 14:17:33 Wolfgang
NotSolved
17.03.2024 14:25:17 ralf_b
NotSolved
17.03.2024 15:00:50 Wolfgang
NotSolved
17.03.2024 19:20:35 ralf_b
NotSolved
18.03.2024 08:22:53 Wolfgang
NotSolved
18.03.2024 18:06:23 Gast74355
NotSolved
19.03.2024 00:02:58 ralf_b
NotSolved
19.03.2024 23:55:43 Gast97212
NotSolved

Ansicht des Beitrags:
Von:
Gast67805
Datum:
17.03.2024 01:21:14
Views:
165
Rating: Antwort:
  Ja
Thema:
VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.

Hallo Gast25455,

schon mal Danke für den Code und deine Hilfe. Dachte man läd sich die Tabelle+Code von der verlinkten Seite.

Habe einen ganz anderen Ansatz gewählt.

Im letzen Teil des Codes steht die Anweisung.

 

'Globale Variablen
Public datumB1 As Variant
Public zellenB4B10 As Variant
Public istSchaltjahr As Boolean

Private Sub Workbook_Open()
    ' Variablen deklarieren
    Dim ws As Worksheet
    Dim wsDeckblatt As Worksheet
    Dim wsStudien As Worksheet
    Dim rng As Range
    Dim cell As Range
    Dim i As Integer
    
    ' Variablen iterieren
    Set ws = ThisWorkbook.Sheets("Deckblatt")
    Set wsDeckblatt = ThisWorkbook.Sheets("Deckblatt")
    Set wsStudien = ThisWorkbook.Sheets("Studien")
    Set rng = ws.Range("B4:B10")
    
    ' Prüfen, ob Zelle B1 leer ist und ob alle Zellen B4, B5, B6, B7, B8, B9, B10 leer sind
    If IsEmpty(ws.Range("B1").Value) And _
       IsEmpty(ws.Range("B4").Value) And _
       IsEmpty(ws.Range("B5").Value) And _
       IsEmpty(ws.Range("B6").Value) And _
       IsEmpty(ws.Range("B7").Value) And _
       IsEmpty(ws.Range("B8").Value) And _
       IsEmpty(ws.Range("B9").Value) And _
       IsEmpty(ws.Range("B10").Value) Then
        MsgBox "Bitte tragen Sie ein Datum in Zelle B1 und die Namen der Studie ein. Speichern Sie die Änderung. Schließen Sie die Arbeitsmappe und öffnen Sie die Arbeitsmappe wieder, damit die Änderungen übernommen werden."
    End If
    
    ' Prüfen, ob in Zelle B1 eine Zahl steht
    If IsNumeric(ws.Range("B1").Value) Then
        ' Jahr gefunden, Ergebnis in globaler Variable und Zelle C1 speichern
        datumB1 = CInt(ws.Range("B1").Value)
        ws.Range("C1").Value = datumB1
        
        ' Prüfen, ob das Jahr ein Schaltjahr ist
        istSchaltjahr = False
        If (datumB1 Mod 4 = 0 And datumB1 Mod 100 <> 0) Or datumB1 Mod 400 = 0 Then
            istSchaltjahr = True
        End If
        ws.Range("E1").Value = istSchaltjahr
    End If
    
   ' Prüfen, ob in den Zellen B4:B10 etwas eingetragen ist
    For Each cell In rng
        i = cell.Row - 3
        On Error Resume Next ' Falls das Arbeitsblatt nicht existiert, wird der Fehler ignoriert
        If Not IsEmpty(cell.Value) Then
            ' Inhalt gefunden, Ergebnis in globaler Variable und Zelle D1 speichern
            zellenB4B10 = zellenB4B10 & " " & cell.Address
            ws.Range("D1").Value = zellenB4B10
            ' Das entsprechende Arbeitsblatt einblenden
            ThisWorkbook.Sheets("Studie_" & i).Visible = True
        Else
            ' Wenn die Zelle leer ist, das entsprechende Arbeitsblatt ausblenden
            ThisWorkbook.Sheets("Studie_" & i).Visible = False
        End If
        On Error GoTo 0 ' Fehlerbehandlung zurücksetzen
    Next cell
    
   
Set wsStudien = ThisWorkbook.Sheets("Studien")

' Wert aus Zelle D1 holen
zellenB4B10 = wsDeckblatt.Range("D1").Value

' Überprüfen, ob der Wert leer ist
If IsEmpty(zellenB4B10) Then
    ' Zeilen im Worksheets "Studien" ausblenden
    For i = 1 To 7
        wsStudien.Rows(i + 7).EntireRow.Hidden = True
    Next i
Else
    ' Zeilen im Worksheet "Studien" einblenden
    Dim zellen As Variant
    zellen = Split(zellenB4B10, " ")
    For Each zelle In zellen
        If zelle <> "" Then
            i = Right(zelle, 1) - 3
            wsStudien.Rows(i + 7).EntireRow.Hidden = False
        End If
    Next zelle
  End If
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
16.03.2024 19:49:56 Wolfgang
NotSolved
17.03.2024 00:44:49 Gast25455
NotSolved
Rot VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.
17.03.2024 01:21:14 Gast67805
NotSolved
17.03.2024 01:39:35 Gast95781
NotSolved
17.03.2024 09:39:20 Gast89529
NotSolved
17.03.2024 11:57:38 ralf_b
NotSolved
17.03.2024 14:17:33 Wolfgang
NotSolved
17.03.2024 14:25:17 ralf_b
NotSolved
17.03.2024 15:00:50 Wolfgang
NotSolved
17.03.2024 19:20:35 ralf_b
NotSolved
18.03.2024 08:22:53 Wolfgang
NotSolved
18.03.2024 18:06:23 Gast74355
NotSolved
19.03.2024 00:02:58 ralf_b
NotSolved
19.03.2024 23:55:43 Gast97212
NotSolved