Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1580to1584
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Zellen ein/ausblenden wenn Bedingungen erfüllt

VBA Zellen ein/ausblenden wenn Bedingungen erfüllt
02.10.2017 10:50:25
Joe
Hallo zusammen,
ich finde eure Plattform super und habe auch schon eine tolle Lösung für eins
meiner Herausforderungen gefunden:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Me.Range("F78:F86")) Is Nothing And Target.Cells.Count = 1 Then
Select Case Target.Address
Case "$F$78"
Call umschaltenBlatt(Target.Value, "1.A")
Call umschaltenBlatt(Target.Value, "1.A.1")
Call umschaltenBlatt(Target.Value, "1.A.2")
Call umschaltenBlatt(Target.Value, "1.A.3")
Call umschaltenBlatt(Target.Value, "1.A.4")
Call umschaltenBlatt(Target.Value, "Rate D1")
Call umschaltenBlatt(Target.Value, "Prognose Gesamt")
Case "$F$80"
Call umschaltenBlatt(Target.Value, "1.B")
Call umschaltenBlatt(Target.Value, "1.B.1")
Call umschaltenBlatt(Target.Value, "1.B.2")
Call umschaltenBlatt(Target.Value, "1.B.3")
Call umschaltenBlatt(Target.Value, "1.B.4")
Call umschaltenBlatt(Target.Value, "Rate D2")
Case "$F$82"
Call umschaltenBlatt(Target.Value, "1.C")
Call umschaltenBlatt(Target.Value, "1.C.1")
Call umschaltenBlatt(Target.Value, "1.C.2")
Call umschaltenBlatt(Target.Value, "1.C.3")
Call umschaltenBlatt(Target.Value, "1.C.4")
Call umschaltenBlatt(Target.Value, "Raten D3")
Case "$F$84"
Call umschaltenBlatt(Target.Value, "1.D")
Call umschaltenBlatt(Target.Value, "1.D.1")
Call umschaltenBlatt(Target.Value, "1.D.2")
Call umschaltenBlatt(Target.Value, "1.D.3")
Call umschaltenBlatt(Target.Value, "1.D.4")
Call umschaltenBlatt(Target.Value, "Rate D4")
Case "$F$86"
Call umschaltenBlatt(Target.Value, "1.E")
Call umschaltenBlatt(Target.Value, "1.E.1")
Call umschaltenBlatt(Target.Value, "1.E.2")
Call umschaltenBlatt(Target.Value, "1.E.3")
Call umschaltenBlatt(Target.Value, "1.E.4")
Call umschaltenBlatt(Target.Value, "Rate D5")
'für jede Zelle eine weitere Case-Anweisung einfügen
Case Else
'do nothing
End Select
End If

Private Sub umschaltenBlatt(Zellwert, Blatt As String)
If Zellwert = "" Then
Sheets(Blatt).Visible = False
Else
Sheets(Blatt).Visible = True
End If
End Sub

Jetzt benötige diese tolle Case Anwendung, nur für Zellenbereiche. Ich habe
leider nichts passendes gefunden und meine VBA Übungen liegen leider schon 20 Jahre zurück.
Es wäre super, wenn ihr mir helfen könntet.
Das Ganze soll mit dem obig eingefügten VBA Code funktionieren und harmonieren.
Betrachtet wird der Bereich F78:F86 (wie oben), ob befüllt oder nicht und das
Ganze soll automatisch passieren, wenn die Zellen befüllt oder geleert werden.
(zur Info: jede zweite Zeile im Betrachtungsbereich F78:F86 wird nicht benutzt
und dient nur der Übersichtlichkeit, heißt F79, F81,F83, usw, hat keine Funktion),
wenn nur F78 befüllt, dann
dann bleibe bei diesem Arbeitsblatt und blende mir die Zellen-Bereiche
B97:K103 und B116:Q122 und B136:Q142 und B154:Q160 und B173:Q179 und B189:195 und
B208:Q214 und B228:Q234 aus,
gehe zu Arbeitsblatt "Prognose Gesamt" und blende mir den Zellen-Bereich
C9:Q18 aus,
und
gehe zu Arbeitsblatt "Navi" und blende mir den Zellen-Bereich
25-28 und 46-68 aus.
wenn F78 und F80 befüllt
dann bleibe bei diesem Arbeitsblatt und blende mir die Zellen-Bereiche
B99:K103 und B118:Q122 und B136:Q142 und B156:Q160 und B175:Q179 und B191:195 und
B210:Q214 und B230:Q234 aus,
und
gehe zu Arbeitsblatt "Prognose Gesamt" und blende mir den Bereich
C11:Q18 aus
und
gehe zu Arbeitsblatt "Navi" und blende mir den Zellen-Bereich
26-28 und 52-68 aus.
Wenn F78, F80 und F82 befüllt, dann
bleibe bei diesem Arbeitsblatt und blende mir die Zellen-Bereiche
B101:K103 und B120:Q122 und B138:Q142 und B158:Q160 und B177:Q179 und B193:195 und
B212:Q214 und B232:Q234 aus,
gehe zu Arbeitsblatt "Prognose Gesamt" und blende mir den Bereich
C13:Q19 aus
und
gehe zu Arbeitsblatt "Navi" und blende mir den Zellen-Bereich
27-28 und 58-68 aus.
Wenn F78, F80, F82 und F84 befüllt, dann
bleibe bei diesem Arbeitsblatt und blende mir die Zellen-Bereiche
B103:K103 und B123:Q122 und B140:Q142 und B160:Q160 und B179:Q179 und B195:195 und
B214:Q214 und B234:Q234 aus,
gehe zu Arbeitsblatt "Prognose Gesamt" und blende mir den Bereich
C15:Q19 aus
und
gehe zu Arbeitsblatt "Navi" und blende mir den Zellen-Bereich
28 und 64-68 aus.
Wenn F78, F80, F82,F84 und F86 befüllt, dann tue gar nichts.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
VBA Zellen ein/ausblenden wenn Bedingungen erfüllt
02.10.2017 10:59:15
Hajo_Zi
ich baue keine Datei nach.
    Dim RaBereich As Range                          ' Variable für Bereich
Dim RaZelle As Range                            ' Variable für Zelle
Set RaBereich = Range("L22:M39, O21:O26")       ' Bereich der Wirksamkeit
Set RaBereich = Intersect(RaBereich, Target)
If Not RaBereich Is Nothing Then
'ActiveSheet.Unprotect ("Passwort")
For Each RaZelle In RaBereich
With RaZelle
End With
Next RaZelle
'ActiveSheet.protect ("Passwort")
End If
Set RaBereich = Nothing                         ' Variable leeren


Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Anzeige
VBA Zellen ein/ausblenden wenn Bedingungen erfüllt
02.10.2017 11:18:15
Hajo_Zi
Target muss ersetzt werden durch Selection
Gruß Hajo
VBA Zellen ein/ausblenden wenn Bedingungen erfüllt
03.10.2017 20:17:03
Joe
Hallo Hajo,
danke für deine Antwort, doch leider komme ich damit nicht klar. Meine Kenntnisse sind doch schon sehr verstaubt.
Wenn ich den Programmcode eingebe, dann öffnet er das Makro Fenster und ich soll ein Makro zuweisen.
Das Programm soll jedoch automatisch funktionieren.
Was mache ich da falsch?
raus
04.10.2017 05:55:14
Hajo_Zi
Gut ich bin dann raus, wie schon geschrieben baue ich keine Datei nach.
nur wenige schauen auf Deinen Rechner und sehen die Datei.
Ich möchte gerne den Fehler im Original sehen.
Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten anonymisieren bzw. pseudonymisieren.
Gruß Hajo
Anzeige

403 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige