Anzeige
Archiv - Navigation
1384to1388
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
Inhaltsverzeichnis

Wenn Inhalt in Zelle dann andere Zelle entsperren

Wenn Inhalt in Zelle dann andere Zelle entsperren
14.10.2014 10:37:53
Sebastian
Hallo zusammen!
Ich möchte mit einem Makro den Wert einer Zelle auslesen und bei einem bestimmten Zeichen sollen dann andere Zellen freigeschalten werden, ich hatte es über folgendes Beispiel gelößt:
If Range("F9") Like "*+*" Then Range("B11").Locked = False Else Range("B11").Locked = True
Soweit so gut, ich möchte nun aber, dass bei einem "+" zwei Zellen freigeschalten werden, bei zwei "+" 3 Zellen und bei drei "+" 4 Zellen.
Beispiele des Inhalts von Zelle F9.
1+1-Fach = 2 bestimmte Zellen beschreibbar
1+1+1-Fach = 3 bestimmte Zellen beschreibbar
1+1+1+1-Fach = 4 bestimmte Zellen beschreibbar
Ich möchte also das die "+" gezählt werden und von deren Anzahl ist die Freischaltung abhängig. Bei meinem Code ist es ja egal wie oft das "+" auftaucht .....
Danke für eure Hilfe!
MfG Sebastian

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Inhalt in Zelle dann andere Zelle entsperren
14.10.2014 11:10:19
Steffi
Hallo Sebastian,
hast du dir so etwas in dieser Richtung vorgestellt?
Sub Bereiche_entsperren()
Dim AnzahlPlus As Long
With ThisWorkbook.Sheets(1) 'anpassen
AnzahlPlus = Len(.Range("F9")) - Len(Replace(.Range("F9"), "+", ""))
If AnzahlPlus  0 Then
.Range("B:B").Locked = True
.Range(.Cells(11, 2), .Cells(11 + AnzahlPlus - 1, 2)).Locked = False
Else
.Range("B:B").Locked = True
End If
End With
End Sub

Das Ganze zählt die + in F9 und entsperrt dann ab der Zelle B11 die entsprechende Anzahl an Zellen. Wenn kein + da ist wird die ganze Spalte gesperrt. Ich hoffe es hilft dir weiter.
Gruß Steffi

Anzeige
AW: Wenn Inhalt in Zelle dann andere Zelle entsperren
14.10.2014 11:37:43
Sebastian
Hallo Steffi,
ich habe bei mir die Zeile " With ThisWorkbook.Sheets(1) 'anpassen" entsprechend auf meinem Sheet geändert. Nur leider hat sich nichts getan.
Zu dem hätte ich gerne, dass bei einem "+" die Zellen "B11" und "B13", bei zwei "B11", "B13" und "B15", sowie zuletzt bei 4 "+" noch die Zelle "B17" hinzu.
Gruß Sebastian

AW: Wenn Inhalt in Zelle dann andere Zelle entsperren
14.10.2014 11:51:18
Steffi
Leider kann ich dir nicht sagen, warum bei dir nichts passiert. Ich hab das Makro bei mir getestet und es hat so funktioniert wie es soll. Hast du vllt noch ein anderes Makro laufen, was da stören könnte oder hast du vllt den Namen des Workbooks nicht richtig angepasst oder ähnliches?
Dafür dass zwischen den entsperrten Zellen immer eine frei sein soll, hab ich den Code angepasst:
Sub Bereiche_entsperren()
Dim AnzahlPlus As Long
Dim Zähl As Long
With ThisWorkbook.Sheets(1) 'anpassen
AnzahlPlus = Len(.Range("F9")) - Len(Replace(.Range("F9"), "+", ""))
If AnzahlPlus  0 Then
.Range("B:B").Locked = True
For Zähl = 1 To AnzahlPlus
.Cells(11 + (2 * (Zähl - 1)), 2).Locked = False
Next Zähl
Else
.Range("B:B").Locked = True
End If
End With
End Sub

Gruß Steffi

Anzeige
AW: Wenn Inhalt in Zelle dann andere Zelle entsperren
14.10.2014 13:58:21
Sebastian
Hallo Steffi,
es funktioniert soweit, nur eines: Es wird immer eine Zelle zu wenig freigegeben.
Jetzt bei einem "+" ist es eine Zelle, bei zwei "+" 2 Zellen usw.
Es sollten sein bei einem "+" 2 Zellen, bei 2 "+" 3 Zellen, bei 3 "+" 4 Zellen
Gruß Sebastian

AW: Wenn Inhalt in Zelle dann andere Zelle entsperren
14.10.2014 14:03:01
Steffi
Hallo Sebastian,
dann bin ich ja froh dass es schon mal klappt :)
Für den Rest einfach nur die For-Schleife etwas abändern und zwar so:
For Zähl = 0 To AnzahlPlus
.Cells(11 + (2 * Zähl), 2).Locked = False
Next Zähl

Gruß Steffi

AW: Wenn Inhalt in Zelle dann andere Zelle entsperren
14.10.2014 14:13:00
Sebastian
Super! :)
Vielen Dank
Jetzt funktioniert alles so wie ich es wollte :)
Danke
Gruß Sebastian

Anzeige
AW: Wenn Inhalt in Zelle dann andere Zelle entsperren
14.10.2014 14:47:07
Sebastian
Ich habe da mit jetzt etwas herum experimentiert ....
Hier mal mein Code der nicht so funktioniert wie ich es mir erhofft hatte ^^
Dim AnzahlPlus As Long
Dim Zähl As Long
With ThisWorkbook.Sheets("Artikelstammdaten")
AnzahlPlus = Len(.Range("E9")) - Len(Replace(.Range("E9"), "+", ""))
If AnzahlPlus 0 Then
.Range("B11:B17").Font.Color = RGB(255, 255, 255)
.Range("C11:C17").Interior.Color = RGB(255, 255, 255)
.Range("C11:C17").Locked = True
For Zähl = 0 To AnzahlPlus
.Cells(11 + (2 * (Zähl)), 2).Font.Color = RGB(0, 0, 0)
.Cells(11 + (2 * (Zähl)), 2).Interior.Color = 49407
.Cells(11 + (2 * (Zähl)), 2).Locked = False
Next Zähl
Else
.Range("B11:B17").Font.Color = RGB(255, 255, 255)
.Range("C11:C17").Interior.Color = RGB(255, 255, 255)
.Range("C11:C17").Locked = True
End If
End With
ActiveSheet.Protect "1234"
End Sub
Ich hätte gerne das es nun auch die oben im Code enthaltenen Funktionen hat.
Desweitern hätte ich gerne eine weitere Funktion eingebaut und zwar sobald in der Zelle "E9" nun "sonstiges" steht soll die gleiche Abfrage mit der Zelle "F9" anstelle von "E9" statt finden.
Gruß Sebastian

Anzeige
AW: Wenn Inhalt in Zelle dann andere Zelle entsperren
14.10.2014 17:02:39
Sebastian
Hallo zusammen,
Steffi hat mir bei meinem oben genannten Problem sehr geholfen. Nun habe ich vor den ganzen Code zu erweitern, wodurch er wesentlich umfangreicher wird.
Dies ist mein bisheriger Code auf dem Blatt.
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect "Passwort"
If Range("E9").Value = "sonstiges" Then Range("F9").Locked = False Else Range("F9").Locked =  _
True
If Range("E9").Value = "sonstiges" Then Range("F9").Interior.Color = 49407 Else Range("F9"). _
Interior.Color = RGB(255, 255, 255)
If Range("E9").Value = "sonstiges" Then Range("F9").Font.Color = RGB(0, 0, 0) Else Range("F9"). _
Font.Color = RGB(255, 255, 255)
Dim AnzahlPlus As Long
Dim Zähl As Long
With ThisWorkbook.Sheets("Artikelstammdaten")
AnzahlPlus = Len(.Range("E9") & .Range("F9")) - Len(Replace(.Range("E9") & .Range("F9"), "+" _
, ""))
If AnzahlPlus  0 Then
.Range("B11:B17").Font.Color = RGB(255, 255, 255)
For Zähl = 0 To AnzahlPlus
.Cells(11 + (2 * (Zähl)), 2).Font.Color = RGB(0, 0, 0)
Next Zähl
Else
.Range("B11:B17").Font.Color = RGB(255, 255, 255)
End If
End With
ActiveSheet.Protect "Passwort"
End Sub

Ich möchte desweitern einbringen, das entsprechend noch: Schriftfarbe, Zellenfarbe und Zellenfreigabe von C11 bis C17 in das “+“-Zählen eingebunden wird. Dann sollte noch eingebunden werden, dass wenn in den Zellen E9 und F9 kein “+“ oder bei den “+“ gespiegelt dabei steht, die oben genannten Auswirkungen nur auf die Zelle B11 und C11 anzuwenden sind.
MfG Sebastian
Anzeige

421 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige