Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeilen automatisch ausblenden

Zeilen automatisch ausblenden
28.04.2014 17:07:14
Gira
Hallo liebes Forum,
nachdem ihr mir letzte Woche schon super weitergeholfen habt, hab ich noch eine letzte Frage, damit meine Datei so funktioniert, wie ich es mir wünsche.
Der bisherige Code lautet:
Private Sub Worksheet_Calculate()
Static dSaved As Double
Dim lCol As Long
If dSaved  Range("AO53").Value Then
dSaved = Range("AO53").Value
For lCol = 9 To 39
Cells(53, lCol).EntireColumn.Hidden = (Cells(53, lCol) = 0)
Next lCol
With ActiveSheet.PageSetup
If Range("A1:AO78").Height > Range("A1:AO78").Width Then
.Orientation = xlPortrait
Else
.Orientation = xlLandscape
End If
End With
End If
End Sub
Dieser gesamte Code bezieht sich auf das Tabellenblatt1.
Jetzt möchte ich, dass zusätzlich zum Ausblenden der o.g. Spalten auch immer ins Tabellenblatt2 geschaut wird und dort alle Zeilen ausgeblendet werden, die aktuell in der Spalte B "NEIN" vermerkt haben.
Wahrscheinlich ganz einfach, oder? Aber wie sage ich's in VBA?
Bereits im Voraus vielen Dank und viele Grüße
girasol

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Mal ein paar Fragen dazu
28.04.2014 19:21:50
Matze
Hallo Gira,
ich tue mich mit dem Calculate Ereignis schwer, hätte ich nicht genommen.
Entweder über einen Button steuern oder mit dem Change Ereignis
Das gleiche gilt dann auch für Tabelle 2.
Wie blendest du denn die Zeilen oder die Spalten wieder ein?
Im Makro von dir hast du Cells(53, lCol) = 0) benutzt - also nur wenn auch eine 0 dort ist!
Es soll nix passieren wenn die Zelle "" (Leer) ist? Stehen dort Formeln drin?
Einfacher für uns ist es wenn die Datei eingestellt würde oder diese als Mustervorlage
in abgespeckter Form.
Gruß Matze

AW: Mal ein paar Fragen dazu
29.04.2014 10:05:39
Gira
Hallo Matze,
die Variante mit "ICol" wurde mir hier im Forum empfohlen und ich muss sagen, es funktioniert super - passt also.
Ich habe es mal grob probiert darzustellen, wie ich es brauche:
Private Sub Worksheet_Calculate()
Static dSaved As Double
Dim lCol As Long
If dSaved  Range("AO53").Value Then
dSaved = Range("AO53").Value
For lCol = 9 To 39
Cells(53, lCol).EntireColumn.Hidden = (Cells(53, lCol) = 0)
Next lCol
    Sheets("service delivery model").Select
Cells.EntireRow.Hidden = False
Dim intZeile As Integer
For intZeile = 8 To 62
If Cells(intZeile, 2) = "NEIN" Then
Columns(intZeile).EntireRow.Hidden = True
End If
Next
Sheets("cost calculation").Select    
With ActiveSheet.PageSetup
If Range("A1:AO78").Height > Range("A1:AO78").Width Then
.Orientation = xlPortrait
Else
.Orientation = xlLandscape
End If
End With
End If
End Sub
Aber leider funktioniert das nicht wie gewünscht.
Das Makro blendet mir dann nicht wie gewünscht auf dem 2. Tabellenblatt erst alle Zeilen ein und selektiert dann, dass nur die mit "NEIN" ausgeblendet werden, sondern bleibt auf dem 1. Tabellenblatt und blendet dort alle Zeilen ein.
Wie muss ich in VBA sagen, dass sich dieser Teil des Codes auf das 2. Tabellenblatt bezieht?
Kann ich diesen Teil des Codes auch mit in die 1. If-Schleife integrieren?
Wo in VBA muss der Code stehen? Unter "Diese Arbeitsmappe"?
Wie ihr seht, bin ich in VBA nicht wirklich fit, daher schon mal vielen Dank für die Unterstützung.
Viele Grüße
girasol

Anzeige
Hab Schichtrythmus,...
29.04.2014 17:26:56
Matze
Hallo Gir,
..und somit nicht immer Zeit hier rein zu schauen.
Wenn du Fragen hast (weitere), dann markiere wo du auch deinen Beitrag schreibst das Kästchen
(neben Passwort) für "offen", dann sehen das Alle Helfer(innen).
Hab das Calculate Ereignis in das Activate Ereignis umgetauft,
somit wird nun der Code ausgeführt sobald du diese Tabelle aktivierst.
Private Sub Worksheet_Activate() 'Calculate
Static dSaved As Double
Dim lCol As Long
Dim intZeile As Long
Application.ScreenUpdating = False
If dSaved  Range("AO53").Value Then
dSaved = Range("AO53").Value
For lCol = 9 To 39
Cells(53, lCol).EntireColumn.Hidden = (Cells(53, lCol) = 0)
Next lCol
With Tabelle2 'Sheets("service delivery model") ANPASSEN
.Cells.EntireRow.Hidden = False
For intZeile = 8 To 62
If .Cells(intZeile, 2).Value = "Nein" Then
.Cells(intZeile, 2).Rows.Hidden = True
End If
Next
End With
With ActiveSheet.PageSetup
If Range("A1:AO78").Height > Range("A1:AO78").Width Then
.Orientation = xlPortrait
Else
.Orientation = xlLandscape
End If
End With
End If
End Sub
Teste das mal, ich hab da keine Lust auch noch eine Datei zu basteln.
Das ist deine Aufgabe,...
Gruß Matze
Anzeige

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige