Office: (Office 2010) Zeilen und Spalten mit VBA ausblenden wenn Wert 0 in bestimmten Zellen

Helfe beim Thema Zeilen und Spalten mit VBA ausblenden wenn Wert 0 in bestimmten Zellen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Excel Kolleginnen und Kollegen, ich habe mehrere Excel-Tabellen mit gleichem Layout aber nicht immer die gleichen Spalten und Zeilen befüllt,... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Richi, 26. April 2016.

  1. Richi Erfahrener User

    Zeilen und Spalten mit VBA ausblenden wenn Wert 0 in bestimmten Zellen


    Hallo Excel Kolleginnen und Kollegen,

    ich habe mehrere Excel-Tabellen mit gleichem Layout aber nicht immer die gleichen Spalten und Zeilen befüllt, möchte nun mit VBA und Makro mir die Zeilen und Spalten pro Tabelle aus- bzw. einblenden. Die Zeilen hab ich schon mal soweit, nun will ich in diesem Makro auch noch die Spalten ausblenden, die Spalte H soll immer ausgeblendet werden, K bis P und S bis X nur wenn in der jeweiligen Spalte in Zeile 15 der Wert 0 enthalten ist soll die Spalte ausgeblendet werden. Mit einem einfach Makro sollen dann Zeilen und Spalten wieder alle eingeblendet werden. Hier mal meine beiden Codes für die Zeilen, der dann erweitert auch gleich die Spalten enthalten soll, damit ich nur immer ein Button drücken muss, ist das möglich. Und bitte nicht täuschen lassen ich bin kein VBA User, also bitte genaue Beschreibung wie und wo ich die Änderungen einfügen muss.
    Gleich mal Vielen Dank für Eurer Hilfe im Voraus!!! Zeilen und Spalten mit VBA ausblenden wenn Wert 0 in bestimmten Zellen :confused:

    Public Sub AusblendenZeilen()

    Dim lngRow As Long
    Dim ws As Worksheet

    With Application
    .Calculation = xlCalculationManual
    .EnableEvents = False
    .ScreenUpdating = False
    End With

    For Each ws In ActiveWindow.SelectedSheets

    With ws

    For lngRow = 17 To 46
    .Rows(lngRow).Hidden = .Cells(lngRow, 25).Value = 0
    Next lngRow
    For lngRow = 54 To 67
    .Rows(lngRow).Hidden = .Cells(lngRow, 25).Value = 0
    Next lngRow
    For lngRow = 75 To 104
    .Rows(lngRow).Hidden = .Cells(lngRow, 25).Value = 0
    Next lngRow
    For lngRow = 126 To 139
    .Rows(lngRow).Hidden = .Cells(lngRow, 25).Value = 0
    Next lngRow
    End With
    Next ws

    With Application
    .Calculation = xlCalculationAutomatic
    .EnableEvents = True
    .ScreenUpdating = True
    End With
    End Sub

    Sub EinblendenZeilen()
    Range("n17 : n139").EntireRow.Hidden = False
    End Sub
     
  2. Beverly
    Beverly Erfahrener User
    Hi,

    versuche es mal so (ungetestet):

    Code:
    Option Explicit
    Dim ws As Worksheet
    
    Public Sub Ausblenden()
        Dim lngRow As Long
        Dim intSpalte As Integer
        Dim intCalculation As Integer
        With Application
            intCalculation = .Calculation
            .Calculation = xlCalculationManual
            .EnableEvents = False
            .ScreenUpdating = False
        End With
        For Each ws In ActiveWindow.SelectedSheets
            With ws
                For lngRow = 17 To 46
                    .Rows(lngRow).Hidden = .Cells(lngRow, 25).Value = 0
                Next lngRow
                For lngRow = 54 To 67
                    .Rows(lngRow).Hidden = .Cells(lngRow, 25).Value = 0
                Next lngRow
                For lngRow = 75 To 104
                    .Rows(lngRow).Hidden = .Cells(lngRow, 25).Value = 0
                Next lngRow
                For lngRow = 126 To 139
                    .Rows(lngRow).Hidden = .Cells(lngRow, 25).Value = 0
                Next lngRow
                .Columns("H").Hidden = True
                For intSpalte = 11 To 24
                    .Columns(intSpalte).Hidden = .Cells(15, intSpalte) = 0
                    If intSpalte = 16 Then intSpalte = 18
                Next intSpalte
            End With
        Next ws
        With Application
            .Calculation = intCalculation
            .EnableEvents = True
            .ScreenUpdating = True
        End With
    End Sub
    
    Sub Einblenden()
        For Each ws In ActiveWindow.SelectedSheets
            ws.Rows.Hidden = False
            ws.Columns.Hidden = False
        Next ws
    End Sub
    
    

    Hinweis: ich würde am Ende die Berechnung nicht generell auf automatisch setzen, denn falls ein Benutzer standardmäßig z.B. manuell eingestellt hat, wird er sich wundern, wenn die Berechnung plötzlich auf automatisch steht. Stattdessen würde ich zu Beginn prüfen, welche Einstellung vorhanden ist und auf diese dann wieder zurücksetzen.

    Bis später,
    Karin
     
    Beverly, 28. April 2016
    #2
  3. Richi Erfahrener User
    Hallo Karin,

    danke ist perfekt.

    Was verstehst du mit "automatisch"? Hab ich das in meinem Makro hinterlegt?
    Wie gesagt bin nicht so gut im VBA Bereich.

    LG Richard ;)
     
    Richi, 3. Mai 2016
    #3
  4. Beverly
    Beverly Erfahrener User

    Zeilen und Spalten mit VBA ausblenden wenn Wert 0 in bestimmten Zellen

    Hi Richard,

    zu Beginn deines Makros setzt du ja die Berechnung auf manuell mit .Calculation = xlCalculationManual - das ist völlig korrekt, wenn du die Berechnung ausschalten möchtest um eine Codeauführung zu beschleunigen. Am Ende des Code setzt du sie dann mit .Calculation = xlCalculationAutomatic auf automatisch, ohne aber zu wissen, wie die Berechnung tatsächlich eingestellt war, ehe du sie auf manuell stellst.
    Bei meinem Code dagegen wird zu Beginn zuerst die Einstellung der Berechnung ausgelesen und auf eine Variable geschrieben, und dann auf manuell gesetzt

    Code:
            [COLOR=#0000ff][I]intCalculation = .Calculation[/I][/COLOR]
            .Calculation = xlCalculationManual
    
    
    und am Ende wird sie wieder in den Ursprungszustand gesetzt, welcher nicht unbedingt auf automatisch eingestellt gewesen sein muss:

    Code:
            .Calculation = [COLOR=#0000ff][I]intCalculation[/I][/COLOR]
    
    
    
    Falls nur du selbst die Mappe verwendest und die Berechnung bei dir grundsätzlich auf automatisch gestellt ist, wirst du da keinen Unterschied merken, aber falls andere Benutzer der Mappe (oder in anderen Projekten die du programmierst) eine andere Einstellung der Berechnung (z.B. manuell) bevorzugen, würde sie in deinem Fall am Ende eben auf automatisch und nicht in den Ausgangszustand zurückgesetzt. Meine Vorgehensweis ist einfach eine Vorsichtsmaßnahme, um den Ausgangszustand für die Berechnung wiederherzustellen - weiter nichts. :)

    Bis später,
    Karin
     
    Beverly, 3. Mai 2016
    #4
  5. Richi Erfahrener User
    Hallo Krain,

    Vielen lieben Dank für die tolle Erklärung und hab deinen Code eingebaut, es arbeiten mehr Personen darauf und auch ich schalte die automatische Berechnung teilweise aus, da ich sonst immer Probleme mit Excel habe bei mehreren offenen Arbeitsmappen.

    LG Richard Zeilen und Spalten mit VBA ausblenden wenn Wert 0 in bestimmten Zellen :rolleyes:
     
    Richi, 4. Mai 2016
    #5
Thema:

Zeilen und Spalten mit VBA ausblenden wenn Wert 0 in bestimmten Zellen

Die Seite wird geladen...
  1. Zeilen und Spalten mit VBA ausblenden wenn Wert 0 in bestimmten Zellen - Similar Threads - Zeilen Spalten VBA

  2. VBA - Wenn Eintrag in Spalte vorhanden dann aktualisieren, sonst neue Zeile

    in Microsoft Excel Hilfe
    VBA - Wenn Eintrag in Spalte vorhanden dann aktualisieren, sonst neue Zeile: Hallo an Alle, ich habe ein Problem und finde keine Lösung in den Foren. Ich hoffe, dass mir jemand hier helfen kann. Ich habe in einer Datei zwei Blätter - eins "TC_Template" ist optisch wie...
  3. Filter: Spalten statt Zeilen

    in Microsoft Excel Hilfe
    Filter: Spalten statt Zeilen: Hallo zusammen, die Filterfunktion ist mir bekannt. Ich habe in der Überschrift die Möglichkeit nach Kriterien zu filtern. Soweit OK. Es geht um den Tarifdschungel der schweizer Bundenbahn...
  4. VBA löscht Spalte anstatt Zeile

    in Microsoft Excel Hilfe
    VBA löscht Spalte anstatt Zeile: Hallo Forum Ich habe dank eurer Hilfe bereits einen guten VBA Code erhalten, der mir Zeile anhand eines Wertes löscht. Es sind drei Tabellen, bei denen Zeilen nach Auftragsnummer gelöscht werden...
  5. VBA: Zeile kopieren, wenn in Spalte O "IC"

    in Microsoft Excel Hilfe
    VBA: Zeile kopieren, wenn in Spalte O "IC": Hallo liebe VBA-Profis, ich habe eine Datei, bei der ich Zeilen vom Tabellenblatt "Salesline" in das Tabellenblatt "Intercompany" kopieren möchte, wenn in Spalte O "IC" steht, wenn die Spalte O...
  6. VBA gefüllte Spalten/Zellen bis zur nächsten leeren Zählen

    in Microsoft Excel Hilfe
    VBA gefüllte Spalten/Zellen bis zur nächsten leeren Zählen: Hallo zusammen, ich bin neu auf dem Gebiet, habt Nachsicht. Ich habe folgendes Problem... Ich habe in Tabellenblatt 1 Zellen die beschrieben werden, diese werden über einen Button in Zeile 4...
  7. Mit VBA erst Wert in Spalte suchen, dann Spalte in dieser Zeile suchen

    in Microsoft Excel Hilfe
    Mit VBA erst Wert in Spalte suchen, dann Spalte in dieser Zeile suchen: Hallo Zusammen, bisher habe ich immer, wenn zwei Suchkriterien vorlagen, eine Kombination von Index/Vergleich genutzt. Damit komme ich bei meinem aktuellen Problem leider nicht weiter. Es...
  8. Spalten in Zeilen umwandeln wenn A1 gleich A2

    in Microsoft Excel Hilfe
    Spalten in Zeilen umwandeln wenn A1 gleich A2: Hallo zusammen Ich brauche dringend Hilfe! Ich muss eine 57765 Zeilen lange Liste formatieren. Es geht um Infos zu Produkten, die ca. so aussehen: <tbody> A B C 1 201100435 Beispieltext 1...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden