Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
280to284
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
280to284
280to284
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Nach Eingabe Zelle sperren?

Nach Eingabe Zelle sperren?
15.07.2003 21:28:02
Jean-Pierre
hallo zusammen,
ich übe noch in vba - folgendes möchte ich realisieren:
wenn ich in b4 etwas eintrage soll in a4 automatisch eine art laufende nummer generiert werden (a4 = 1, a5 = 2 usw.) zusätzlich möchte ich in c4 die aktuelle uhrzeit eingetragen bekommen (c4, c5 usw) nun habe ich folgendes makro im archiv gefunden:

 Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
Cells(Target.Row, 3).Value = Time
End Sub
aber hier kann man in spalte b immer wieder einträge ändern - das soll nicht sein!
am besten wäre wenn nach einem eintrag diese zelle dann gesperrt wäre! (spalte a und c sind standardmäßig gesperrt!)
zusätzlich habe ich noch das makro (?) von marc (nochmals dank):

 Sub test()
Dim lfdNr
lfdNr = 1
For i = 4 To Cells(Rows.Count, 2).End(xlUp).Row
If Cells(i, 2).Value > 0 Then
Cells(i, 1).Value = lfdNr
lfdNr = lfdNr + 1
End If
Next
End Sub
welches jedoch nicht funktioniert - mir aber irgenwie logisch erscheint (?)
kann man diese anpassen - wenn ja wie???????????????
wer weiss einen rat?
gruß aus berlin
jean-pierre

                    

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nach Eingabe Zelle sperren?
15.07.2003 22:28:24
ChrisL
Hallo Jean-Pierre
Versuchs mal so...

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 And Target.Row >= 4 Then
ActiveSheet.Unprotect
Cells(Target.Row, 1) = Target.Row - 3
Cells(Target.Row, 3) = Time
Cells(Target.Row, 2).Locked = True
ActiveSheet.Protect
End If
End Sub

Zu Problem 2 kann ich dir nicht wirklich helfen, da ich nicht wirklich weiss, was du machen möchtest. Allerdings kann ich mir vorstellen, dass die Variable nach Beendigung des Sub den Wert verliert, weshalb es immer wieder bei 1 anfängt. Vielleicht kannst du mal die Variable lfdNr in einem Standardmodul als Public deklarieren...
z.B.
Public lfdNr As Long
Gruss
Chris

Anzeige
AW: Nach Eingabe Zelle sperren?
15.07.2003 22:30:48
ChrisL
Blöd, vergiss Teil 2... ist ja klar. Vermutlich hat Marcus die Lösung.

AW: Nach Eingabe Zelle sperren?
15.07.2003 22:21:43
Marcus
Hi jean-pierre
versuchs mal mit folgendem Code:

Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Column <> 2 Or .Row < 4 Then Exit Sub
Me.Unprotect "XXX"
Application.EnableEvents = False
Cells(.Row, 1).Value = .Row - 3
Cells(.Row, 3).Value = Time
.Locked = True
Application.EnableEvents = True
Me.Protect "XXX"
End With
End Sub


Sub test()
Dim lfdNr As Long
lfdNr = 1
For i = 4 To Cells(Rows.Count, 2).End(xlUp).Row
If Cells(i, 2).Value <> "" Then
Cells(i, 1).Value = lfdNr
lfdNr = lfdNr + 1
End If
Next
End Sub

mfg
Marcus

Anzeige
AW: Nach Eingabe Zelle sperren?
15.07.2003 22:44:58
Jean-Pierre
hallo markus,
das ist es fasst! wie kann ich die spalte c (zeit) gleich mitsperren?
die soll ja nicht verändert werden.
dank euch jetzt schon.
grüße aus berlin (jetzt zuhause *gg)
jean-pierre
ps: dank auch dir chris *g

AW: Nach Eingabe Zelle sperren?
15.07.2003 23:03:51
Marcus
Hi jean-pierre
du könntest die gesamte Spalte C generell sperren,
oder darf jemand sonst dort Eintragungen vornehmen?
Ansonsten ersetze die Locked-Zeile durch diese:
.Resize(1, 2).Locked = True
mfg
Marcus

Ja, Suuuuuuuuuuuuuper!
15.07.2003 23:38:58
Jean-Pierre
hallo markus,
danke dir ganz doll. so klappt es.
grüße aus berlin und angenehme nachtruhe
jean-pierre

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige