Anzeige
Archiv - Navigation
1832to1836
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

Auflistung Parkdauer von Autos

Auflistung Parkdauer von Autos
26.05.2021 19:59:47
Autos
Hallo,
ich habe einen Parkplatzbereich in 6 Zonen eingeteilt, mit je zwei Parkbereichen und Nummerierung.
In den Bereichen möchte ich die Kennzeichen eingeben sobald ein Auto dort parkt und möchte das Kennzeichen wieder entfernen sobald das Auto abgeholt wird.
Ist es möglich, dass wie in der Beispieldatei in ein Parkbereich ein Kennzeichen eingegeben wird automatisch die Aufstellung ab Zeile 22 erstellt wird mit den ganzen Daten von dem Parkbereich ( Datum mit Uhrzeit der Eingabe, Kennzeichen, Zone, Bereich, Platz und abgestellt oder abgeholt) eingetragen wird ?
Es soll wenn wie im Beispiel Zelle AK 6 das Kennzeichen eines Autos eingegeben wird, wie hier 888, dann soll es in der Tabelle ab Zeile 22 die Daten: Datum und Uhrzeit der Eingabe, Kennzeichen, Zone, Bereich, Platz und abgestellt oder abgeholt automatisch eintragen.
Bei "abgestellt" soll "ja" eingetragen werden wenn ein Kennzeichen eingegeben wird.
Wenn das Kennzeichen 888 im Beispiel Zelle AK 6 wieder entfernt wird, soll automatisch ein neuer Eintrag in der nächsten freien Zeile erzeugt werden mit den ganzen Daten, nur soll bei abgeholt ein ja stehen und bei abgestellt soll die Zelle leer sein.
Die Einträge sollen jeweils in der nächsten freien Zeile aufgenommen werden, damit später eine Auswertung über die Parkdauer darüber erstellt werden kann.
Ist es verständlich erklärt und ist dies über Excel VBA möglich ?
Vielen Danke für eure Unterstützung.
Gruß Thomas
https://www.herber.de/bbs/user/146393.xlsx

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auflistung Parkdauer von Autos
26.05.2021 22:31:05
Autos
Hallo Thomas,
hier mein Vorschlag. Der Code reagiert auf eine Zelländerung in den bestimmten Bereichen und ermittelt anhand der Zelladresse die Werte für die Eintragung.
https://www.herber.de/bbs/user/146394.xlsm
Datei zerschossen!
26.05.2021 22:48:03
Yal
Hallo Ralf,
hast Du deine Bearbeitung unter den Namen "Kopie von 146393.xlsm" gespeichert?
Dann hat das Hochladen meiner Version (auch mit diesem Namen) dein Link zerstört (eine bekannte Macke des Forums).
Dann umbenennen und normal laden. Deine Lösungsweg würde mich interessieren.
Sorry für den Umstand, ich wusste nicht mal, an dem Moment, wo ich hochgeladen habe, dass eine Lösugn schon da war.
VG
Yal
Anzeige
AW: Datei zerschossen!
26.05.2021 23:24:25
ralf_b
Nein, die hies anders und der link scheint noch zu funktionieren.
Ich habe den Code nicht so nice wie du machen können.
Die Zellbereiche sind hart kodiert, damit ein Anfänger das vielleicht auch noch nachvollziehen kann.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KennZ, Zone, Bereich, Platz, action As Boolean
Dim letzte As Long
Application.EnableEvents = False
If Not Intersect(Target, Intersect(Range("6:7,15:16"), Columns("C:AU"))) Is Nothing Then
Bereich = Cells(Target.Row, "B").Value
Select Case Target.Column
Case 3 To 17:   Zone = IIf(Target.Row > 10, "F", "C")
Case 18 To 32:  Zone = IIf(Target.Row > 10, "E", "B")
Case 33 To 47:  Zone = IIf(Target.Row > 10, "D", "A")
End Select
KennZ = Target.Value
Platz = Cells(5, Target.Column).Value
action = IIf(Target = "", False, True)
letzte = Cells(Rows.Count, "A").End(xlUp).Row
Range("A" & letzte + 1) = Now()
Range("C" & letzte + 1) = KennZ
Range("F" & letzte + 1) = Zone
Range("H" & letzte + 1) = Bereich
Range("J" & letzte + 1) = Platz
If action Then
Range("L" & letzte + 1) = "ja"
Else
Range("N" & letzte + 1) = "ja"
End If
End If
Application.EnableEvents = True
End Sub

Anzeige
Jetzt tut's
27.05.2021 00:09:09
Yal
Hallo Ralf,
ich musste Excel neustarten, sodass es klappt. Irgendwas hatte sich verstellt.
Keine Überraschung: wir kommen auf das gleiche Ergebnis.
Beim löschen wird bei Dir den Kennzahl nicht übergeben, aber da alle andere Information da sind, könnte man diesen wieder herstellen.
Fehlt mir gerade ein: genauso bei Dir wie bei mir: es wird einen eintrag auch erzeugt, wenn eine leere Platz geleert wird! sollte nicht sein.
@Thomas: anbei eine korrigierte version
https://www.herber.de/bbs/user/146397.xlsm
VG
Yal
Anzeige
AW: Jetzt tut's
27.05.2021 18:55:50
Thomas
Hallo Männer,
dankeschön für die schnelle Hilfe, klappt perfekt!
Eine Frage hätte ich hierzu noch, was muss ich in der Formel verändern bzw. eingeben wenn ich noch eine weitere Parkplatzfläche dazubekommen würde. Beispiel: R10:AF10
Bzw. kann ich im allgemeinen neue Parkplatzfläche hinzufügen ?
Wenn ja, wie ?
Vielen Dank für eure Hilfe.
Gruß Thomas
AW: Jetzt tut's
27.05.2021 20:40:32
Yal
Hallo Thomas,
wie in meinem Beitrag https://www.herber.de/forum/archiv/1832to1836/1832849_Auflistung_Parkdauer_von_Autos.html#1832853 erklärt
Du muss (zum Beispiel für 6 neuen Zonen)
_ die neuen Zonen definieren und benennen in der Form Zone_G, Zone_H, Zone_I, Zone_J, Zone_K, Zone_L
_ die Einträge in Spalte B für jede neue Zeile pflegen
_ Im Coding die Zeile

For Each Zone In Split("A,B,C,D,E,F", ",")
in

For Each Zone In Split("A,B,C,D,E,F,G,H,I,J,K,L", ",")
ändern (keine Leerzeichen!)
Mehr nicht.
Du kannst auch die Zonen neu definieren, in dem Du in Namensmanager deren Bereich änderst.
VG
Yal
Anzeige
Lustig!
26.05.2021 22:42:02
Yal
Hallo Thomas,
Es ist verständlich und über VBA-möglich. und gar nicht mal so kompliziert.
Dafür habe ich die Zonen "benannt":
_ Zone_A: Bereich C6 bis Q7 markieren, im kleinen Fenster oben links, wo C6 steht "Zone_A" eingetragen, mit Enter bestätigt
_ Dito Zone_B mit R6:AF7, Zone C, ....
Es ergibt unter Reiter "Formeln", Auswahl "Namensmanager" 6 benannte Bereiche "Zone_A", "Zone_B", ...
Dann kann man leichter abfangen, wenn sich etwa in diesen Bereiche sich ändert:
Wenn der Inhalt einer Zelle geändert wird, startet das Ereignis "Worksheet_Change" und die Zelle wird als "Target" übergeben.
Dann prüft man, ob diese Zelle in einer der Zone liegt (Intersect)
Wenn es zutrifft, übergibt man die Information an der erste leere Zeile in der Liste (A1, C1, .. sind relative Bezüge in dieser Zeile)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim R As Range
Dim Zone
For Each Zone In Split("A,B,C,D,E,F", ",")
Set R = Intersect(Target, Me.Range("Zone_" & Zone))
If Not R Is Nothing Then
With Me.Range("A99999").End(xlUp).Offset(1, 0).EntireRow
.Range("A1") = Now 'Datum
.Range("C1") = IIf(Target.Value = "", AlteKennzeichen, Target.Value) 'Kennzeichen
.Range("F1") = Zone 'Zone
.Range("H1") = Me.Cells(Target.Row, 2) 'Bereich
.Range("J1") = Me.Cells(5, Target.Column) 'Platz
.Range("L1") = IIf(Target.Value = "", "", "Ja") 'Abgestellt
.Range("N1") = IIf(Target.Value = "", "Ja", "") 'Abgeholt
End With
Exit For
End If
Next
End Sub
Knifflig ist, wenn man einen Kennzeichen löscht (Taste Entf). Da muss man sich vorher merken, was in der Zelle war.
Es wird mit dem Ereignis "Worksheet_SelectionChange": wenn die Markierung einer Zelle sich ändert, wird aufgenommen, was in der Zelle, die gerade ausgewählt wurde, drin ist. Achtung: es wird nur eine Zelle "gemerkt". Du darfst daher nicht mehrere Zellen gleichzeitig leeren! (auch befüllen sollte nur einzel, aber da kann weniger schief laufen).

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count = 1 Then AlteKennzeichen = Target.Value
End Sub
Solltest Du es erweitern wollen: fest ist nur, dass in Zeile 5 die Platznummer und in Spalte B die Bereiche sind. Und die Zonen müssen ein Namen im Form Zone_x haben.
https://www.herber.de/bbs/user/146395.xlsm
Viel Spass damit.
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige