VBA-Mit Doppelklick Arbeitsblatt ausblenden
#1
Hallo Freunde,

ich bitte um Hilfe für folgendes Vorhaben.

Mit einem Doppelklick in die Zelle J1 des Arbeitsblattes "Bestand" will ich erreichen, dass ein zweites Arbeitsblatt ("Berechnungen") ausgeblendet respektive im ausgeblendeten Zustand wieder eingeblendet wird. Mit googeln und ausprobieren bin ich zu folgendem Makro-Konstrukt gekommen, das - wie kann's anders sein - nicht funktioniert. Mein bisheriges VBA-Wissen verhindert leider, dass ich den Fehler finde.

Ich möchte keine Commandbutton einsetzen.

Code:
Private Sub Worksheet_BeforedoubleClick(ByVal Target As Range, Cancel As Boolean)
'
' MitDkBlattAusblenden
    Dim raBereich As Range
        Set raBereich = Sheets("Bestand").Range("J1")
            If Intersect(Target, raBereich) Is Nothing Then Exit Sub
               If Sheets("Berechnungen") = False Then
                        Sheets("Berechnungen") = True
                    Else: Sheets("Berechnungen") = False
                End If
End Sub

Schon jetzt mal ein "sakrisches" Dankschön.

Nachtrag:

Es wird der Laufzeitfehler 438 (Objekt unterstützt Eigenschaft oder Methode nicht) angezeigt und die Codezeile
Zitat:If Sheets("Berechnungen") = False Then
im Debugger gelb unterlegt.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#2
Hallo Günter,

versuchs mal so

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
' MitDkBlattAusblenden
    Dim raBereich As Range
        Set raBereich = Sheets("Bestand").Range("J1")
        
            If Intersect(Target, raBereich) Is Nothing Then Exit Sub
                If Sheets("Berechnungen").Visible = False Then
                        Sheets("Berechnungen").Visible = True
                    Else: Sheets("Berechnungen").Visible = False
                End If
End Sub
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • WillWissen
Top
#3
Hi Stefan,

schnelle Hilfe, schneller Erfolg.

Danke, klappt, wie ich's mir vorstelle. Was mich dabei ärgert, ist meine eigene Dussligkeit. Habe gerade deinen Code mit meinem geposteten verglichen. Das fehlende "Visible" habe ich beim Kopieren und Code verschlanken einfach nur übersehen.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#4
Hallo!
Da der Doppelklick logischerweise nur im ActiveSheet geht und man die Logik vereinfachen kann, kann man den Code erheblich verkürzen.
Probier mal:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address(0, 0) = "J1" Then Sheets("Berechnungen").Visible = Not Sheets("Berechnungen").Visible
Cancel = True
End Sub
Gruß, Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • WillWissen
Top
#5
Hi Ralf,

hab' ich natürlich gleich ausprobiert - vielen Dank, klappt ebenso gut.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#6
Hi zusammen,

mit den Spielereien wachsen (leider) auch die Begierlichkeiten.

Kann mir bitte jemand die Syntax verraten, die ich anwenden muss, um in die jeweils letzte belegte Zelle in Spalte A zu springen? Mit der Codezeile
Code:
Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1).Activate
unter den Makros von Stefan und Ralf ist nur die letzte belegte Zelle auf dem Blatt "Bestand" aktiviert. Ich finde keine Lösung, wie ich das zweite (eingeblendete) Blatt ansprechen soll.

Also, meine Wunschvorstellung:

DK = Einblenden "Berechnungen" - jetzt soll hier die letzte belegte Zelle (Spalte A) aktiviert sein.
Weiterer DK = Ausblenden "Berechnungen" - jetzt soll im Blatt "Bestand" die letzte belegte Zelle (Spalte A) aktiviert sein.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#7
Hallo zusammen,

ich hol's nochmals nach oben. Gibt es für meinen Wunsche keine Lösung?
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#8
Hallo Günter,

Code:
Application.Goto Worksheets("Bestand").Cells(Rows.Count, 1).End(xlUp)

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • WillWissen
Top
#9
Hi Uwe,

lieben Dank, das war's.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste