Schleife - Zellen sperren

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Schleife - Zellen sperren
von: Marco Sonnenschein
Geschrieben am: 12.05.2015 18:40:49

Hi, ich möchte folgendes erreichen:
Userbild
Ich habe von Zelle B6 bis I6 eine Zeile (gelbe Zellen auf dem Screenshot), wo ich jeweils immer einen Namen eintragen kann. In den jeweiligen Spalten, also B8 bis B15, C8 bis C15 usw. bis I8 bis I15 können Informationen jeweils zu dem Namen eingetragen werden.
Die Zellen mit den Informationen (B8-B15 etc.) sollen solange deaktiviert bleiben, bis zuvor oben ein Name eingetragen wurde.
Hierzu habe ich folgenden Code, der das auch soweit macht wie ich will.

ActiveSheet.Unprotect
        If IsEmpty(Range("B6")) = True Then
            Range("B8:B15").Locked = True
            Range("B8:B15").Interior.ColorIndex = 2
        Else
             Range("B8:B15").Locked = False
             Range("B8:B15").Interior.ColorIndex = 6
        End If
  ActiveSheet.Protect
Jetzt soll eine Schleife die jeweiligen Werte selbst setzen: also B6, C6 usw und B8:B15, C8:C15 usw.
Ich sitze jetzt schon seit geraumer Zeit dran, aber es will nicht :(

Bild

Betrifft: AW: Schleife - Zellen sperren
von: Marco Sonnenschein
Geschrieben am: 12.05.2015 20:25:01
Ich hab es nunmehr irgendwie geschafft. Nur frag ich mich, ob der Code so optimal ist

Dim i, ii As Integer
    Dim strNamen(7, 2) As String
    
    strNamen(0, 0) = "B6"
    strNamen(0, 1) = "B8:B15"
    strNamen(1, 0) = "C6"
    strNamen(1, 1) = "C8:C15"
    strNamen(2, 0) = "D6"
    strNamen(2, 1) = "D8:D15"
    strNamen(3, 0) = "E6"
    strNamen(3, 1) = "E8:E15"
    strNamen(4, 0) = "F6"
    strNamen(4, 1) = "F8:F15"
    strNamen(5, 0) = "G6"
    strNamen(5, 1) = "G8:G15"
    strNamen(6, 0) = "H6"
    strNamen(6, 1) = "H8:H15"
    strNamen(7, 0) = "I6"
    strNamen(7, 1) = "I8:I15"
    'MsgBox strNamen(0, 0) & "-" & strNamen(0, 1)
  
  For i = 0 To 7
  For ii = 0 To 1
    'MsgBox strNamen(i, ii)
        If IsEmpty(Range(strNamen(i, 0))) = True Then
           
            Range(strNamen(i, 1)).Locked = True
            Range(strNamen(i, 1)).Interior.ColorIndex = 2
            Application.DisplayAlerts = False
        Else
             Range(strNamen(i, 1)).Locked = False
             Range(strNamen(i, 1)).Interior.ColorIndex = 6
        End If
    Next
  Next


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Schleife - Zellen sperren"