Spalten sortieren mit Blattschutz
#1
Hallo,

ich bastel grad an einer Tabelle, auf welcher ich den Großteil sperre und 2 Spalten ein und 2 andere ausblende, letzteres per VBA und Optionsfeld.

Sperre ich aber die Tabelle, funktioniert das ein/ausblenden nicht mehr. :(

So sieht meine Formel aktuell aus...

Code:
Sub Spalten_C_F_EIN_AUS()
         Application.ScreenUpdating = False
      Select Case ActiveSheet.Range("D1").Value
        Case 1
          Range("J:J,K:K").EntireColumn.Hidden = True
          Range("G:G,H:H,I:I").EntireColumn.Hidden = False
        Case 2
          Range("G:G,I:I").EntireColumn.Hidden = True
          Range("H:H,J:J,K:K").EntireColumn.Hidden = False
        End Select
      Application.ScreenUpdating = True
      End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
  Select Case Target.Address
    Case "$D$1"
      Spalten_J_K_EIN_AUS
    Case Else
      'do nothing
  End Select
End Sub
Ich weiss, dass es da eine Möglichkeit mit

Code:
Sub schutz()
    ActiveSheet.Protect daspasswort
End Sub
bzw
Code:
Sub schutz()
    ActiveSheet.Unprotect deinpasswort
End Sub
gibt... aber wie bau ich das ein? Huh 

Vielen Dank für Eure Hilfe
Gruß

ItsME
Antworten Top
#2
Hallo

direkt hinter Sub als ersten Befehl:  ActiveSheet.Unprotect  und vor End Sub wieder_  ActiveSheet.Protect in deinen Code einfügen!  Das ist alles.
Geht bei ungesperrtem Sheet auch OHNE Passwort, es sei denn du hast bereits ein Passwort vergeben und das Blatt ist gesperrt.

mfg Gast 123
Antworten Top
#3
Hi,

danke erstmal für Deine schnelle Reaktion...

So funktioniert es leide rnicht :(

Code:
Sub Spalten_C_F_EIN_AUS()
ActiveSheet.Unprotect
      Application.ScreenUpdating = False
      Select Case ActiveSheet.Range("D1").Value
        Case 1
          Range("J:J,K:K").EntireColumn.Hidden = True
          Range("G:G,H:H,I:I").EntireColumn.Hidden = False
        Case 2
          Range("G:G,I:I").EntireColumn.Hidden = True
          Range("H:H,J:J,K:K").EntireColumn.Hidden = False
        End Select
      Application.ScreenUpdating = True
      ActiveSheet.Protect
      End Sub
'Zusätzlich Code unter Tabelle1, falls Wert in A4 nicht über die Options-Schaltflächen geändert _
wird
Private Sub Worksheet_Change(ByVal Target As Range)
  Select Case Target.Address
    Case "$D$1"
      Spalten_J_K_EIN_AUS
    Case Else
      'do nothing
  End Select
End Sub
Hab zudem grad festgestellt, dass ich das Problem noch an anderer Stelle hab Confused 

Code:
Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    Selection.EntireRow.Insert
    ' ACHTUNG: Das With darf nicht 1 drüber, da sich durch das Insert die Selection ändert
    With Selection.EntireRow
        .Offset(-1, 0).Resize(1).Copy
        .PasteSpecial Paste:=xlPasteFormulas
    End With
    Application.ScreenUpdating = True
End Sub

hatte hier grad noch einen code aufgeführt, der funktioniert aber doch... war mein Fehler Angel
Gruß

ItsME
Antworten Top
#4
zur Ergänzung:

Es gibt in der Mappe unterschiedlich gesperrte Zellen...

Zudem habe ich noch einige Buttons eingefügt, welche einen in unterschiedliche Zeilen springen läßt.. die Buttons sind immer sichtbar
(nach klick), egal in welcher Zeile man sich befindet... das funktioniert nach dem sperren auch nur sehr schlecht :(

Der Floating-Effekt gar nicht mehr und die Buttons nur ab und an :(

Ich habe mal eine Musterdatei beigelegt mit allen VBA's etc. auf dem ersten Tabellenblatt ahbe ich auch einige Kommentare in der Nähe
der jeweiligen Buttons gemacht ;)

Das Passwort, welches die Tabelle sperrt lautet "TEST"

Vielen Dank für Eure Hilfe :)
Gruß

ItsME
Antworten Top
#5
keiner eine Idee? Oder Hilfe?
Gruß

ItsME
Antworten Top
#6
Hallöchen,

eventuell beschreibst mal etwas genauer, wann was passiert bzw. nicht.
Wenn irgendwo eine Zelle nicht ausgewählt werden kann, liegt es vielleicht, weil selbige gesperrt ist, an der Einstellung beim Schutz?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#7
Hallo

mir ist aufgefallen das die Beispieldatei extrem langsam reagiert. Da kann man nach jedem Klick Kaffee trinken gehen.
Die Button sind nicht auf FreeFloating eingestellt!!  Das Anklicken der Button dauerte über 10 Sekunden, im Zeitlupentempo!
Gibt es da zigtausend Formeln die man nicht sieht, oder warum ist die Datei so langsam???

mfg Gast 123
Antworten Top
#8
@Gast,
welche Datei meinst Du? Die xlsm läuft flüssig.

@ItsME
wenn Du bei Blattschutz Objekte anfassen willst musst Du z.B. den Schutz entsprechend einstellen oder auch bei den Objekten die Eigenschaft "gesperrt" deaktivieren
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#9
Hallo

seltsam, bei mir gibt es dirverse Problem, habe es gerade noch mal getestet. Kann z.B. jetzt die Button zum bearbeiten nicht mehr anklicken, trotz Entwicklermodus. Das ging vorher. Sie springen aber korrekt zur gewünschten Zeile. FreeFloatin kann ich nicht mehr kontrollieren.

mfg Gast 123
Antworten Top
#10
@schauan
ich hab zwischenzeitlich noch etwas mit hin- und her und telefonieren etc. lösen können.

Jetzt gibt es nur noch 3 Probleme:

1.  Spalten ein-/ausblenden mit dem Options-Feld in L1 funktioniert nicht (nun in einem Modul (Modul2)).

2.  [Zeile löschen] löscht, nachdem ich die Tabelle im Script entsperre und wieder sperre nur eine Zelle... nicht mehr die markierte Zeile :(

3.  wenn ich die Tabelle manuell entsperre und iregendwohin klicke, sperrt sie sich automatisch wieder Huh  unglücklich, wenn man mehr bearbeiten muss :(

Habe die aktuelle Version mal hochgeladen :)

@Gast 123
bei mir läuft sie "noch" flüssig

Das "Floating" ist leider nur so halb automatisch... scrollt man runter und klickt wirgendwo hin, flutschen die Buttons runter in den sichtbaren Bereich rechts.

@schauan
ich weiss, aber genau da liegt das Problem... nahezu überall funktioniert das, außer bei den Spalten, die aus-/eingeblendet werden sollen.

Ich denke, es muss für diese Atkion die Tabelle erst entsperrt werden und anschließend gesperrt werdne... aber das geht mit meiner Logik zu VBA nicht :(

@Gast 123
vielleicht eine andere Excel-Version? ich nutze hier die aktuellste.. zu Haus die 2019er.. auf Beiden gehts...

Danke
Gruß

ItsME
Antworten Top


Gehe zu:


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