Supportnet / Forum / Tabellenkalkulation
Zellen in Abhängikeit einer anderen Zelle sperren
Frage
Hallo,
ich möchte in einer Tabelle nur Zellen freigeben, wenn eine andere Zelle gefüllt ist.
Ich habe eine Spalte mit Artikeln und mehrere Spalten, in die Werte für die Artikel eingetragen werden. Es soll nun nicht vorkommen, daß man in eine Zeile der Wertespalten schreiben kann, wenn die entsprechende Zelle in der Artikelspalte nicht gefüllt ist. Also
"A1" ist leer, dann "B1:B30" = gesperrt
"A1" ist gefüllt, dann "B1:B:30" nicht gesperrt.
Geht so was?
Vielen Dank
Klaus
Antwort 1 von Sir_Hilly
jo mit VBA musst mal in der Hilfe schauen oder VBA-Hilfe nachinstallieren.
Gruß
Gruß
Antwort 2 von sicci
Hallo Klaus,
rechtsklicke das Tabellenregister, gehe auf Code anzeigen - da hinein folgenden Code:
Private Sub Worksheet_selectionChange(ByVal Target As Excel.Range)
If Target.Column = 2 And Cells(Target.Row, 1) <> "" Then
Cells(Target.Row, 3).Select
End If
End Sub
Gruß
sicci
P.S. Cells baut sich so auf:
Cells(ZeileInZahlen, SpalteInZahlen), so daß z.B. Cells(1,2) Zelle B, Zeile 2 ist. Target ist in den Ereignismakros(Makros, die bei Eintritt eines Ereignisses // wie Change-ZellinhaltsWechsel SelectionChange-MarkierungsWechsel // ablaufen) die momentan selektierte Adresse.
rechtsklicke das Tabellenregister, gehe auf Code anzeigen - da hinein folgenden Code:
Private Sub Worksheet_selectionChange(ByVal Target As Excel.Range)
If Target.Column = 2 And Cells(Target.Row, 1) <> "" Then
Cells(Target.Row, 3).Select
End If
End Sub
Gruß
sicci
P.S. Cells baut sich so auf:
Cells(ZeileInZahlen, SpalteInZahlen), so daß z.B. Cells(1,2) Zelle B, Zeile 2 ist. Target ist in den Ereignismakros(Makros, die bei Eintritt eines Ereignisses // wie Change-ZellinhaltsWechsel SelectionChange-MarkierungsWechsel // ablaufen) die momentan selektierte Adresse.
Antwort 3 von sicci
ohje:
Cells(1,2) ist natürlich
Zelle (Zeile 1, Spalte B), nicht Zeile 2 !!
Verspreche, mich um weniger Huddelei zu bemühen :-)!
Gruß
sicci
Cells(1,2) ist natürlich
Zelle (Zeile 1, Spalte B), nicht Zeile 2 !!
Verspreche, mich um weniger Huddelei zu bemühen :-)!
Gruß
sicci
Antwort 4 von Klaus.
Hi Sicci,
> habe aus dem <> ein = gemacht und ich nähere mich meinem Wunschergebnis.
> L.Vira
> aus Herbers Forum hatte noch eine Idee mit einer Messagebox. Habe ich auch
> übernommen. Box weist auf fehlenden Eintrag hin. A B E R: Ich war gestern
> Abend
> wohl auch schon woanders.Meine Beschreibung war natürlich falsch. Muß
> heißen:
> Ist A1 gefüllt dann B1:AZ1 frei
> Ist A1 leer dann B1:AZ1 gesperrt.
> Und ich muß den Namensbereich noch genauer definieren. Konkret ist das der
> Bereich
> B8:B30, also nicht die ganze Spalte.
> habe aus dem <> ein = gemacht und ich nähere mich meinem Wunschergebnis.
> L.Vira
> aus Herbers Forum hatte noch eine Idee mit einer Messagebox. Habe ich auch
> übernommen. Box weist auf fehlenden Eintrag hin. A B E R: Ich war gestern
> Abend
> wohl auch schon woanders.Meine Beschreibung war natürlich falsch. Muß
> heißen:
> Ist A1 gefüllt dann B1:AZ1 frei
> Ist A1 leer dann B1:AZ1 gesperrt.
> Und ich muß den Namensbereich noch genauer definieren. Konkret ist das der
> Bereich
> B8:B30, also nicht die ganze Spalte.
Antwort 5 von sicci
Hallo Klaus,
z.B. so? Hier wird in Zeilen 8 bis 30 bei leerer Zelle in Spalte A die nächste Zeile, Spalte B aktiviert.:
Events = Ereignis - damit beim Selektieren der nächsten Zeile das SelectionChange-Event nicht gleich wieder erkannt und eine Endlosschleife produziert wird muß es vorübergehend ausgeschaltet werden (EnableEvents=False)
Gruß
sicci
z.B. so? Hier wird in Zeilen 8 bis 30 bei leerer Zelle in Spalte A die nächste Zeile, Spalte B aktiviert.:
Private Sub Worksheet_selectionChange(ByVal Target As Excel.Range)
If Target.Row < 8 Or Target.Row > 30 Then Exit Sub
If Target.Column <> 1 And Cells(Target.Row, 1) = "" Then
MsgBox "Kein Eintrag in Spalte A!"
Application.EnableEvents = False
Cells(Target.Row + 1, 2).Select
Application.EnableEvents = True
End If
End Sub
Events = Ereignis - damit beim Selektieren der nächsten Zeile das SelectionChange-Event nicht gleich wieder erkannt und eine Endlosschleife produziert wird muß es vorübergehend ausgeschaltet werden (EnableEvents=False)
Gruß
sicci
Antwort 6 von Klaus.
Hallo Sicci,
hatte Netzprobleme, deswegen die späte Antwort.
Ja das ist es. Habe jetzt auch verstanden, wie man die Bereiche definiert. Sollte mir vielleicht doch einen Kurs antun oder ein Buch kaufen.
Oder beides.
Tausend Dank
Klaus
hatte Netzprobleme, deswegen die späte Antwort.
Ja das ist es. Habe jetzt auch verstanden, wie man die Bereiche definiert. Sollte mir vielleicht doch einen Kurs antun oder ein Buch kaufen.
Oder beides.
Tausend Dank
Klaus