Frage zu Excel

  • #1
A

a234781

Aktives Mitglied
Themenersteller
Dabei seit
10.02.2002
Beiträge
42
Reaktionspunkte
0
Ort
Zug
Hallo zusammen

ich möchte abhängig vom Inhalt einer Zelle einen Zellenbereich sperren oder öffnen.

Beispiel:
Wenn A1 den Wert 1 hat sollen die Zellen B1 bis D1 gesperrt werden,
wenn A1 den Wert 0 hat sollen die Zellen B1 bis D1 geöffnet werden.

Ist das möglich?  :-\

Gruss zoggeli
 
  • #2
Hi zoggeli,

es ist möglich  ;)

Folgendes Makro in der Code-Seite der Tabelle schaltet dir->gesperrt' der Zellen
abhängig vom Wert in Spalte A (1=sperren, alles ander = entsperren).

Gruß Matjes  ;)
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
 ->Wenn SPalte A den Wert 1 hat, Spalte B,C,D sperren
  Const c_SPA As Long = 1->Spalte A
  Const c_spVon As Long = 2->Spalte B
  Const c_spBis As Long = 4->Spalte D
  
  Dim zelle As Range, b_locked As Boolean, sp As Long, v_value As Variant
  
  For Each zelle In Target
    If zelle.Column = c_SPA Then
      If Not IsNumeric(zelle.Value) Then
        b_locked = False
      ElseIf zelle.Value <> 1 Then
        b_locked = False
      Else
        b_locked = True
      End If
      If b_locked And (Not Cells(zelle.Row, c_spVon).Locked) Then
        Range(Cells(zelle.Row, c_spVon), _
              Cells(zelle.Row, c_spBis)).Locked = True
      ElseIf (Not b_locked) And Cells(zelle.Row, c_spVon).Locked Then
        Range(Cells(zelle.Row, c_spVon), _
              Cells(zelle.Row, c_spBis)).Locked = False
      End If
    End If
  Next
End Sub
 
  • #3
Hallo Matjes

wie ich sehe bist Du ein richtiger VBA Spezialist denn auch dieses Script funktioniert tadellos solange der Wert nicht aus einem Formelergebnis (Wenn-Dann) kommt.
Da ich die Zellensperrung durch die Eingabe eines Kurzzeichens (3 Buchstaben) auslösen möchte frage ich Dich ob die Aktivierung auch durch alphanumerische Zeichen erfolgen kann.

Besten Dank

Gruss zoggeli
 
  • #4
Hallo zoggeli,

da hast Du natürlich Recht.  ;D

Geänderte Formelergebnisse gehen nicht durch das Change-Ereignis. Das müßte man mit dem Calculate-Ereignis abfangen und die Zellen in Spalte A auf Formeln prüfen.  Ist eine Formel enthalten, müßte man den Wert auslesen und abhängig von diesem den Zustand->Gesperrt' der Zeilenzellen B-D überprüfen und ggf. umschalten.

Hier jetzt die Version Worksheet_Change mit alphanumerischem Wert:
(den Wert c_SperrKuerzel bitte anpassen)

Gruß Matjes  ;)
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
 ->Wenn SPalte A den Wert 1 hat, Spalte B,C,D sperren
  Const c_SPA As Long = 1->Spalte A
  Const c_spVon As Long = 2->Spalte B
  Const c_spBis As Long = 4->Spalte D
  Const c_SperrKuerzel As String = Zeile gesperrt
  
  Dim zelle As Range, b_locked As Boolean, s_tmp As String
  
  For Each zelle In Target
    If zelle.Column = c_SPA Then
      s_tmp = zelle.Value
      If c_SperrKuerzel = s_tmp Then b_locked = True Else b_locked = False
      If b_locked And (Not Cells(zelle.Row, c_spVon).Locked) Then
        Range(Cells(zelle.Row, c_spVon),  Cells(zelle.Row, c_spBis)).Locked = True
      ElseIf (Not b_locked) And Cells(zelle.Row, c_spVon).Locked Then
        Range(Cells(zelle.Row, c_spVon),  Cells(zelle.Row, c_spBis)).Locked = False
      End If
    End If
  Next
End Sub
 
  • #5
Hallo Matjes

was würde ich nur ohne Dich machen? Auch dieses Script funktioniert super. Ich hoffe dass ich mich einmal bei Dir revanchieren kann.

Nochmals recht herzlichen Dank

Gruss zoggeli
 
Thema:

Frage zu Excel

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.839
Beiträge
707.962
Mitglieder
51.492
Neuestes Mitglied
Janus36
Oben