Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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)
Antworten 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
Antworten 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)
Antworten 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
Antworten 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)
Antworten 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)
Antworten 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)
Antworten 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
Antworten 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)
Antworten Top


Gehe zu:


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