Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Friedrichroda /
Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.

Bei Problemen mit der Erreichbarkeit der Foren bitte den Link / Favoriten prüfen und ersetzen. Dazu über die Startseite ins gewünschte Forum wechseln und zu den Favoriten hinzufügen. Excel ist derzeit z.B. unter http://www.clever-excel-forum.de/forum-2.html zu erreichen.


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.
?mage

Misserfolg ist eine Chance, es beim
nächsten Mal besser zu machen.

(Henry Ford)
http://www.sprueche-zum-nachdenken.eu
to 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 7 / Office 2007
[-] Folgende(r) 1 Benutzer sagt Danke an Steffl für diesen Beitrag:
  • WillWissen
to 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.
?mage

Misserfolg ist eine Chance, es beim
nächsten Mal besser zu machen.

(Henry Ford)
http://www.sprueche-zum-nachdenken.eu
to 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
[-] Folgende(r) 1 Benutzer sagt Danke an RPP63 für diesen Beitrag:
  • WillWissen
to top
#5
Hi Ralf,

hab' ich natürlich gleich ausprobiert - vielen Dank, klappt ebenso gut.
?mage

Misserfolg ist eine Chance, es beim
nächsten Mal besser zu machen.

(Henry Ford)
http://www.sprueche-zum-nachdenken.eu
to 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.
?mage

Misserfolg ist eine Chance, es beim
nächsten Mal besser zu machen.

(Henry Ford)
http://www.sprueche-zum-nachdenken.eu
to top
#7
Hallo zusammen,

ich hol's nochmals nach oben. Gibt es für meinen Wunsche keine Lösung?
?mage

Misserfolg ist eine Chance, es beim
nächsten Mal besser zu machen.

(Henry Ford)
http://www.sprueche-zum-nachdenken.eu
to top
#8
Hallo Günter,

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

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

lieben Dank, das war's.
?mage

Misserfolg ist eine Chance, es beim
nächsten Mal besser zu machen.

(Henry Ford)
http://www.sprueche-zum-nachdenken.eu
to top


Gehe zu:


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