online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Petra65 vom 27.09.2021, 20:53 Options

Lösung

Schaltfläche durch ToggleButton ersetzen ...funktioniert nicht

Hallo,

ich möchte aus zwei Schaltflächen einen ToggleButton machen, erhalte aber leider eine Fehlermeldung.
Beide Schaltflächen an sich funktionieren einwandfrei.

Der Code der beiden Schaltflächen lautet:

Sub ausblenden()
Sheets("2008").Select
Columns("H:O").Select
Selection.EntireColumn.Hidden = True
Range("P8").Select
ActiveSheet.Protect (159)
Sheets("2009").Select
Columns("H:O").Select
Selection.EntireColumn.Hidden = True
Range("P8").Select
ActiveSheet.Protect (159)
Sheets("2009").Select
Range("P8").Select
End Sub

Sub einblenden()
strVergleichspasswort = "159"
strPasswort = InputBox("Bitte Passwort Eingeben", "Passwortabfrage")
If strPasswort <> strVergleichspasswort Then
MsgBox "Passwort falsch", vbCritical, "A C H T U N G"
Exit Sub
End If
Sheets("2008").Select
ActiveSheet.Unprotect (159)
Columns("G:P").Select
Selection.EntireColumn.Hidden = False
Range("P8").Select
Sheets("2009").Select
ActiveSheet.Unprotect (159)
Columns("G:P").Select
Selection.EntireColumn.Hidden = False
Range("P8").Select
Sheets("2009").Select
Range("P8").Select
End Sub

Der Code des ToggleButton ist:
Private Sub ToggleButton1_Click() 'Spalten GW ein- bzw. ausblenden

Dim strPasswort As String, strVergleichspasswort As String
Dim intS As Integer

If Me.ToggleButton1.Value = True Then
With Me.ToggleButton1
.Caption = "Auswertung einblenden"
.ForeColor = &HFF&
End With

Sheets("2008").Select
Columns("H:O").Select
Selection.EntireColumn.Hidden = True
Range("P8").Select
ActiveSheet.Protect (159)
Sheets("2009").Select
Columns("H:O").Select
Selection.EntireColumn.Hidden = True
Range("P8").Select
ActiveSheet.Protect (159)
Sheets("2009").Select
Range("P8").Select

ElseIf Me.ToggleButton1.Value = False Then
With Me.ToggleButton1
.Caption = "Auswertung ausblenden"
.ForeColor = &H8000&
End With

strVergleichspasswort = "159"
strPasswort = InputBox("Bitte Passwort Eingeben", "Passwortabfrage")
If strPasswort <> strVergleichspasswort Then
MsgBox "Passwort falsch", vbCritical, "A C H T U N G"
Exit Sub
End If

Sheets("2008").Select
ActiveSheet.Unprotect (159)
Columns("G:P").Select 'HIER FEHLER ?
Selection.EntireColumn.Hidden = False
Range("P8").Select
Sheets("2009").Select
ActiveSheet.Unprotect (159)
Columns("G:P").Select
Selection.EntireColumn.Hidden = False
Range("P8").Select
Sheets("2009").Select
Range("P8").Select
End If

End Sub

Es sollen nur Spalten ausgeblendet und mit Schutz versehen werden, beim zweiten Button wird der Schutz aufgehoben und die Spalten eingeblendet.

Warum funktioniert es nicht ???

Vielen Dank schonmal und viele Grüße

Petra


Antwort schreiben

Antwort 1 von Kauz vom 27.09.2021, 21:48 OptionsLösung

Lösung
Hallo Petra...
hab Deinen code mal ein wenig überarbeitet:
Sub ausblenden()
  Sheets("2008").Select
  ActiveSheet.Columns("H:O").EntireColumn.Hidden = True
'Selection.EntireColumn.Hidden = True
'ActiveSheet.Range("P8").Select
  ActiveSheet.Protect (159)
  Sheets("2009").Select
  ActiveSheet.Columns("H:O").EntireColumn.Hidden = True
'Selection.EntireColumn.Hidden = True
'ActiveSheet.Range("P8").Select
  ActiveSheet.Protect (159)
'ActiveSheet.Sheets("2009").Select
'Range("P8").Select
  Application.GoTo reference:=Sheets("2008").Cells(8, 16), Scroll:=False
  Application.GoTo reference:=Sheets("2009").Cells(8, 16), Scroll:=False
End Sub

Sub einblenden()
' ---------------------- Passwortabfrage --------------------
  strVergleichspasswort = "159"
  strPasswort = InputBox("Bitte Passwort Eingeben", "Passwortabfrage")
  If strPasswort <> strVergleichspasswort Then
    MsgBox "Passwort falsch", vbCritical, "A C H T U N G"
    Exit Sub
  End If
' --------- Wenn Passwort richtig Spalten einblenden --------
  Sheets("2008").Select
  ActiveSheet.Unprotect (159)
  ActiveSheet.Columns("G:P").EntireColumn.Hidden = False
'Selection.EntireColumn.Hidden = False
'Range("P8").Select
  Sheets("2009").Select
  ActiveSheet.Unprotect (159)
  ActiveSheet.Columns("G:P").EntireColumn.Hidden = False
'Selection.EntireColumn.Hidden = False
'Range("P8").Select
'Sheets("2009").Select
'Range("P8").Select
  Application.GoTo reference:=Sheets("2008").Cells(8, 16), Scroll:=False
  Application.GoTo reference:=Sheets("2009").Cells(8, 16), Scroll:=False
End Sub

'Der Code des ToggleButton ist:
Private Sub ToggleButton1_Click() 'Spalten GW ein- bzw. ausblenden

Dim strPasswort As String, strVergleichspasswort As String
Dim intS As Integer

  If Me.ToggleButton1.Value = True Then
    With Me.ToggleButton1
      .Caption = "Auswertung einblenden"
      .ForeColor = &HFF&
    End With
' ----------------------- Blatt 2008 ---------------------
    Sheets("2008").Select
    ActiveSheet.Columns("H:O").EntireColumn.Hidden = True
'Selection.EntireColumn.Hidden = True

'ActiveSheet.Range("P8").Select

    ActiveSheet.Protect (159)

' ------------------------ Blatt 2009 --------------------

    Sheets("2009").Select
    ActiveSheet.Columns("H:O").EntireColumn.Hidden = True
'Selection.EntireColumn.Hidden = True

    ActiveSheet.Protect (159)
'------------ Zelle P8 in den Blättern Markieren ------
    Application.GoTo reference:=Sheets("2008").Cells(8, 16), Scroll:=False
    Application.GoTo reference:=Sheets("2009").Cells(8, 16), Scroll:=False
'ActiveSheet.Range("P8").Select

'Sheets("2009").Select

  ElseIf Me.ToggleButton1.Value = False Then
    With Me.ToggleButton1
      .Caption = "Auswertung ausblenden"
      .ForeColor = &H8000&
    End With

    strVergleichspasswort = "159"
    strPasswort = InputBox("Bitte Passwort Eingeben", "Passwortabfrage")
    If strPasswort <> strVergleichspasswort Then
      MsgBox "Passwort falsch", vbCritical, "A C H T U N G"
      Exit Sub
    End If

    Sheets("2008").Select
    ActiveSheet.Unprotect (159)
    ActiveSheet.Columns("G:P").EntireColumn.Hidden = False
'Selection.EntireColumn.Hidden = False
'ActiveSheet.Range("P8").Select
    Sheets("2009").Activate
    ActiveSheet.Unprotect (159)
    ActiveSheet.Columns("G:P").EntireColumn.Hidden = False
'Selection.EntireColumn.Hidden = False
    Application.GoTo reference:=Sheets("2008").Cells(8, 16), Scroll:=False
    Application.GoTo reference:=Sheets("2009").Cells(8, 16), Scroll:=False
'ActiveSheet.Range("P8").Select
'    Sheets("2009").Select
'    ActiveSheet.Range("P8").Select
  End If

End Sub


Du wirst sehen, dass einige Einzelbefehle zusammengefasst sind...
Hab die alten als Kommentar gelassen, damit Du das besser nachvollziehen kannst.

Ich weiss nicht, wie weit Du in VBA bist.... deshalb:
Falls noch Erklärungen nötig sind ...Melden.

Gruß
Kauz

Antwort 2 von Petra65 vom 28.09.2021, 06:09 Options

Hallo, guten Morgen,

nun funktioniert es einwandfrei ....

Ich kann also dann davon ausgehen, dass Excel nicht wußte bei welchem Tabellenblatt er die Befehle ausführen soll ???

Zitat:
Ich weiss nicht, wie weit Du in VBA bist....

Naja .. aufzeichnen kann ich ein Makro, einfügen auch ... alles andere bereitet mir echt Kopfzerbrechen ;-)

Vielen Dank für Deine Hilfe .

Gruss - Petra

Antwort 3 von Kauz vom 28.09.2021, 11:16 Options

Hallo Petra....
ganz genau... Deine Vermutung ist richtig!

Noch ein Tipp für das Ansprechen von Zellen:
Application.GoTo reference:=Sheets("2009").Cells(8, 16), Scroll:=False

Wenn du <False> gegen <True> tauscht, dann wird zu dieser Zelle gescollt.

Ach, und noch'n Tipp:

Range("B3") ist das Gleiche wie cells(3,2).....
Nur bei Cells kommt erst die Zeile und dann die Spalte.

Is ja schön wenn's geklappt hat...

Dann noch viel Spass....

Gruß
Kauz

Ähnliche Themen

Schaltfläche in Excel einbinden?
Mark_tp  05.06.2008 - 60 Hits - 4 Antworten

Makro / Schaltfläche / Verknüpfung
Tomschi  07.04.2009 - 203 Hits - 4 Antworten

Spalten Ein-/Ausblenden über eine Schaltfläche
Jessi-baby  08.07.2009 - 254 Hits - 4 Antworten

einen Wert über eine Schaltfläche erhöhen
woher53  06.08.2009 - 161 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026