Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1708to1712
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Zellschutz einfügen und Felder färben
21.08.2019 11:44:37
Sophia
Hey!
Ich habe eine Tabelle und möchte diese formatieren. Eigentlich würden dazu Excelfunktionen ausreichen, das ganze soll aber mit vba gelöst werden, um das ganze für die späteren Anwender noch einfacher zu gestalten.
Meine Kenntnisse in vba halten sich momentan noch in Grenzen, weshalb ich eure Hilfe bräuchte.
In meiner Tabelle sind verschiedene Spalten und Zellen gefüllt und bereits formatiert.
Das Makro soll nun beim Benutzer fragen, welche Zeile er mit einem Schreibschutz versehen möchte, diese Zeile soll dann auch formatiert werden, sodass die Zellen keine Farbfüllung mehr haben. Diese beiden Dinge sollen immer nur für eine Zeile passieren und dann weiterhin so gelten. (also wenn eine Zelle Schreibschutz und neue Formatierung bekommen hat, soll dies so bleiben)
Ich habe mich mal an einen Code gesetzt, dieser Funktioniert jedoch noch nicht so, wie ich das möchte. Kann da vlt mal wer drüber schauen?
Sub Schreibschutz_einfügen_und_formatieren()
'Abfrage für welche Zeile Schreibschutz eingefügt werden soll
Dim sTxt As String
sTxt = InputBox("Zeile, für die Schreibschutz aktiviert werden soll:")
If sTxt = "" Then Exit Sub
'.Protection.AllowEditRanges().Delete
Worksheets("Kst. 116").Rows(sTxt).Locked = True
Worksheets("Kst. 116").Rows(sText).ColorIndex = None

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellschutz einfügen und Felder färben
21.08.2019 12:32:18
Nepumuk
Hallo Sophia,
würde ich so machen:
Option Explicit

Public Sub Schreibschutz_einfügen_und_formatieren()
    'Abfrage für welche Zeile Schreibschutz eingefügt werden soll
    
    Dim objRange As Range
    Dim objRangeCollection As Collection
    
    Set objRangeCollection = New Collection
    
    Do
        objRangeCollection.Add Application.InputBox(Prompt:= _
            "Zeile, für die Schreibschutz aktiviert werden soll markieren:", Title:="Auswahl", Type:=8)
        If TypeOf objRangeCollection(objRangeCollection.Count) Is Range Then
            Set objRange = objRangeCollection(objRangeCollection.Count)
            Set objRangeCollection = Nothing
            Exit Do
        ElseIf IsEmpty(objRangeCollection(objRangeCollection.Count)) Then
            MsgBox "Objektzuweisung fehlgeschlagen. Bitte nochmal versuchen", _
                vbCritical, "Fehlermeldung"
        ElseIf Not objRangeCollection(objRangeCollection.Count) Then
            Exit Sub 'cancelbutton pressed
        Else
            MsgBox "Fehler " & CStr(vbObjectError) & vbLf & vbLf & _
                "Unbekannter Objektfehler beim zuweisen eines Bereiches.", _
                vbCritical, "Fehlermeldung"
            Exit Sub
        End If
    Loop
    
    With objRange.EntireRow
        
        .Locked = True
        
        .Interior.ColorIndex = xlColorIndexNone
        
    End With
    
    Set objRange = Nothing
    
End Sub

Der Benutzer muss dabei keine Zeilennummer eingeben sondern einfach markieren. Wobei es egal ist ob er nur eine einzelne Zelle in der gewünschten Zeile markiert oder die ganze Zeile. er kann auch mehrere Zeilen markieren.
Gruß
Nepumuk
Anzeige
AW: Zellschutz einfügen und Felder färben
21.08.2019 12:44:31
Sophia
Hallo Nepumuk!
Vielen Dank für deine Lösung! Das sieht auf jeden Fall super aus! Und ich kann ungefähr nachvollziehen, was dort gemacht wird!
An sich funktioniert das ganze auch schon super, nur das mit dem Schreibschutz irgendwie noch nicht so ganz. (Oder ich stehe gerade total auf dem Schlauch :D) Ich dachte wenn dieser aktiviert wird, dann stehen die Zellen fest und ich kann diese nicht mehr überschreiben. Dies kann ich aber auch, wenn ich das Makro ausgeführt habe. Muss ich da in Excel zusätzlich noch etwas aktivieren oder verstehe ich das falsch?
Vielen Vielen Dank schon mal!
Anzeige
AW: Zellschutz einfügen und Felder färben
21.08.2019 13:49:22
Dieter(Drummer)
Hallo Sophia,
ich habe es mal so mit Nepumuks Code gemacht und es funktioniert:
Im gewünschten Tabellenblatt habe ich gesamtes Tabellenblatt, Format den Haken "Gesperrt" entfernt.
Oder mit diesem Code geht es auch:

Cells.Locked = False

Dann Nempumuks Code aktivieren, entsprechende Zellen markieren, die gesperrt werden sollen.
Zum Schluss musst Du das Tabellen schützen. Fertig.
Jetzt funktioniert der Schutz der markierten Zellen und alle anderen Zellen sind frei.
Falls Jemand besser Ideen hat, gerne an Sophia ...
Gruß, Dieter(Drummer) -kein Spezialist :-)
Anzeige
AW: Zellschutz einfügen und Felder färben
21.08.2019 16:29:21
Nepumuk
Hallo Sophia,
du musst natürlich die Tabelle noch schützen. Also:
Option Explicit

Public Sub Schreibschutz_einfügen_und_formatieren()
    'Abfrage für welche Zeile Schreibschutz eingefügt werden soll
    
    Dim objRange As Range
    Dim objRangeCollection As Collection
    
    Set objRangeCollection = New Collection
    
    Call ActiveSheet.Unprotect(Password:="GEHEIM")
    
    Do
        Call objRangeCollection.Add(Item:=Application.InputBox(Prompt:= _
            "Zeile, für die Schreibschutz aktiviert werden soll markieren:", Title:="Auswahl", Type:=8))
        If TypeOf objRangeCollection(objRangeCollection.Count) Is Range Then
            Set objRange = objRangeCollection(objRangeCollection.Count)
            Set objRangeCollection = Nothing
            Exit Do
        ElseIf IsEmpty(objRangeCollection(objRangeCollection.Count)) Then
            MsgBox "Objektzuweisung fehlgeschlagen. Bitte nochmal versuchen", _
                vbCritical, "Fehlermeldung"
        ElseIf Not objRangeCollection(objRangeCollection.Count) Then
            Exit Sub 'cancelbutton pressed
        Else
            MsgBox "Fehler " & CStr(vbObjectError) & vbLf & vbLf & _
                "Unbekannter Objektfehler beim zuweisen eines Bereiches.", _
                vbCritical, "Fehlermeldung"
            Exit Sub
        End If
    Loop
    
    With objRange.EntireRow
        
        .Locked = True
        
        .Interior.ColorIndex = xlColorIndexNone
        
    End With
    
    Call ActiveSheet.Protect(Password:="GEHEIM")
    
    Set objRange = Nothing
    
End Sub

Gruß
Nepumuk
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige