Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1720to1724
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

AutoWert statisch schreiben

AutoWert statisch schreiben
08.11.2019 14:22:50
Martin
Hallo,
ich habe eine Excel Tabelle in der fortlaufend Vorgänge erfasst werden. Jeder Vorgang erhält eine eigene Vorgangsnummer, die aus dem jeweiligen Jahr einem slash und einer 4stelligen fortlaufenden Nummer erzeugt wird. (z.B. 2019/0035) Das Jahr wird über die Funktion Jahr() ermittelt und mit der laufenden Nummer verkettet. Über die "WENN(NICHT") Funktion erscheint die Nummer erst, wenn in der rechts nebenliegenden Zelle ein Wert eingetragen wird. (Nummer erscheint in D5, wenn in E5 ein Wert eingetragen wird, usw.) Soweit so gut. Nun soll natürlich die Nummer, die einmalig vergeben wird und u.a. in einer anderen Anwendung weiter verwendet wird, nicht mehr geändert werden können. Aktuell wird ja aus der 2019 zum Jahreswechsel ein 2020. Kann mir da jemand helfen? Vielen Dank für alle Ideen.
Gruß Martin

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: AutoWert statisch schreiben
08.11.2019 14:55:32
fcs
Hallo Martin,
vor dem Jahreswechsel musst du dann via "Kopieren" --%gt "Einfügen nur Werte" die Formeln in Spalte D für das Jahr 2019 durch ihre Werte ersetzen.
LG
Franz
AW: AutoWert statisch schreiben
08.11.2019 18:39:18
Martin
Danke Franz, das ist die manuelle Variante, die will ich aber nicht, da bundesweit zwei duzend Leute darauf zugreifen und ich dann der erste sein müsste, der das Jahr ändert.
Die Vorgangsnummer wird ja automatisch generiert und erscheint dann in der leeren schreibgeschützen Zelle. Dann soll die jeweils neu generierte Nummer sofort automatisch überschrieben werden. Dazu wird über VBA jeweils kurz der Schreibschutz entfernt und wieder gesetzt. So ist die Nummer auch für den DAU nicht versehentlich veränderbar; und vor allem wird beim Jahreswechsel die jeweilige Jahreszahl nicht verändert.
Ich hoffe mich jetzt klarer ausgedrückt zu haben.
LG Martin
Anzeige
AW: AutoWert statisch schreiben
11.11.2019 12:12:36
fcs
Hallo Martin,
wenn die Datei schon mit Makros arbeitet, dann kannst du ein Ereignismakro einbauen, das auf Eingaben in der Spalte E reagiert und bei Eingaben die Formel in Spalte D durch den Ergebniswert ersetzt.
Damit dies auch funktioniert müssen die ANwender die Datei natürlich mit aktivierten Makros öffnen.
LG
Franz
'Ereignis-Makro unter dem Code-Modul des Tabellenblatts mit den Eingaben
Private Sub Worksheet_Change(ByVal Target As Range)
'prüfen ob Zeilennummer der geänderten Zelle >=5 und ob nur eine Zelle geändert wurde
If Target.Row >= 5 And Target.Cells.Count = 1 Then
'Spalte der geänderten Zelle prüfen
Select Case Target.Column
Case 5 'Spalte E
'wenn in Spalte E ein Wert eingetragen wurde, dann in Spalte D den Wert der Formel  _
_
berechnen und durch das Formelergebnis ersetzen
If Target  "" Then
Me.Unprotect Password:=""
With Cells(Target.Row, 4)
.Calculate
.Value = .Value
End With
Me.Protect Password:=""
End If
End Select
End If
End Sub

Anzeige
AW: AutoWert statisch schreiben
14.11.2019 17:09:23
Martin
Hallo Franz,
vielen Dank für deine Hilfe, ich habe jetzt noch eine ganze Weile rumgebastelt und habe deinen Code noch etwas angepasst, da das ganze als Tabelle formatiert ist, (da muss ich die Formeln nicht bis zur Zeile x durchschreiben).
Allerdings habe ich den Blattschutz nicht hinbekommen, vermutlich durch die Tabellenformatierung. Im Moment geht es, allerdings ohne den Blattschutz.
LG Martin
Hier mein Code:
  Private Sub Workbook_Open()
Sheets("Pfändungen").Select
Range("E:E").End(xlDown).Offset(1, 0).Select
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
'prüfen ob Zeilennummer der geänderten Zelle >=1 und ob nur eine Zelle geändert wurde
If Target.Row >= 1 And Target.Cells.Count = 1 Then
'Spalte der geänderten Zelle prüfen
Select Case Target.Column
Case 5 'Spalte E
'wenn in Spalte E ein Wert eingetragen wurde, dann
If Target  "" Then
Call Vorgangsnummer
End If
End Select
End If
End Sub
Sub Vorgangsnummer()
'Ermittelt die letzte gefüllte Zelle in Spalte "E" und aktiviert die Zelle, _
welche sich 2 Zellen links der letzten gefüllten Zelle befindet
Range("E:E").End(xlDown).Offset(0, -2).Activate
'Kopiert die aktivierte Zelle und fügt den Wert eine Zelle rechts ein
Selection.Copy
ActiveCell.Offset(0, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Verschiebt die Zellmarkierung 2 Zellen nach rechts
ActiveCell.Offset(0, 2).Activate
' entfernt die "Copy" Markierung
SendKeys "{ESC}"
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige