Supportnet Computer
Planet of Tech

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ß

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.

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

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.

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.:

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


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: