Office: Letzte leere Zelle in Zeile neben heutigem Datum finden.

Helfe beim Thema Letzte leere Zelle in Zeile neben heutigem Datum finden. in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo VBA-Spezialisten, ich bin hier der Neue. Ich habe da ein kleines Problem und hoffe, dass mir geholfen werden kann. Habe es schon über... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Michael 1966, 17. Juli 2009.

  1. Letzte leere Zelle in Zeile neben heutigem Datum finden.


    Hallo VBA-Spezialisten,

    ich bin hier der Neue.

    Ich habe da ein kleines Problem und hoffe, dass mir geholfen werden kann. Habe es schon über Google gesucht aber nichts richtiges gefunden.

    Ich die Zeit, die meine Mitarbeiterin für die Bearbeitung einer Excel-Datei benötigt dokumentieren. Hier geht es um die Abschätzung des Gesamtaufwands für einen Kunden. D.h. konkret, sie Bearbeitet mehrere Dateien die ich per Hyperlink auf diese Datei eingefügt habe. Bisher war es so, dass sie einmal am Tag darauf zugriff und die Uhrzeit beim Öffnen rechts neben das aktuelle Datum gesetzt wurde (Spalte B). Ich habe einfach das ganze Jahr in die Spalte A, fortlaufend von oben nach unten gesetzt. Beim Schließen der Datei wurde die aktuelle Uhrzeit in die entsprechende Zelle (Spalte C) rechts neben die Anfangszeit gesetzt. In Spalte D habe ich entsprechend die Summe gebildet.

    Siehe Beispiel:

    09.07.2009 / 11:50 / 14:19 / 2:29:13
    10.07.2009 / 10:45 / 13:59 / 3:14:00
    11.07.2009
    12.07.2009
    13.07.2009 / 09:55 / 12:35 / 2:40:00
    14.07.2009 / 13:17 / 14:12 / 0:55:00
    15.07.2009 / 14:12 / 05:13 / 1:01:00
    16.07.2009 / 13:30 / 14:30 / 1:00:18
    17.07.2009 / 07:42 / 08:55 / 1:12:41
    18.07.2009

    Dafür habe ich diese VBA in "DieseArbeitsmappe" eingesetzt:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim Target As Range
    Set Target = Sheets("Tabelle1").Range("A:A").Find(Date)
    Sheets("Tabelle1").Activate
    If Not Target Is Nothing Then Target.Select
    ActiveCell.Offset(0, 2).Activate
    ActiveCell.Value = Time

    End Sub

    Private Sub Workbook_Open()
    Dim Target As Range
    Set Target = Sheets("Tabelle1").Range("A:A").Find(Date)
    Sheets("Tabelle1").Activate
    If Not Target Is Nothing Then Target.Select
    ActiveCell.Offset(0, 1).Activate
    ActiveCell.Value = Time

    End Sub


    Nun kommt es neuerdings vor, das mehrmals am Tag auf diese Datei zugergriffen werden muss. Ich möchte nun, dass dann die letzte leere Zelle der entsprechenden Zeile (heutiges Datum) gefunden wird und die entsprechende Uhrzeit eingetragen wird.

    Beispiel:

    2. mal Öffnen, Startzeit Spalte E. 2. Mal Schließen, Uhrzeit Spalte F. Summenbildung Spalte G.
    3. mal Öffnen, Startzeit Spalte H. 2. Mal Schließen, Uhrzeit Spalte I. Summenbildung Spalte J.
    usw.

    Für Eure Hilfe wäre ich sehr Dankbar.

    Gruß
    Michael
     
    Michael 1966, 17. Juli 2009
    #1
  2. Hajo_Zi
    Hajo_Zi Erfahrener User
    Hallo Michael,

    ich möchte Dich nur darauf hinweisen
    das
    "Ich die Zeit, die meine Mitarbeiterin für die Bearbeitung einer Excel-Datei benötigt dokumentieren."
    ist in Deutschland nicht zulässig.

    Gruß Hajo
     
    Hajo_Zi, 17. Juli 2009
    #2
  3. Hallo Hajo,

    vielen Dank für die Anmerkung. Dieser Aspekt ist mir sehr wohl bewusst.

    Es wird ja auch keine Geheimniskrämerei darum gemacht, die Mitarbeiterin weiß jedoch darüber bescheit und sie sieht auch die dokumentierten Zeiten.

    Wie gesagt es geht um die zeitliche Dokumentation für einen Kunden. Da hier der Vertrag ggf. eine Nachbesserung erfahren muss.

    Die manuelle Eingabe der Zeiten ist ihr zu aufwendig. Sie bat mich auch, ob hierfür ein Automatismus zu entwerfen. Wie er ja bereits vorhanden ist. Diesen möchten wir beide aber erweitert haben.

    Gruß Michael
     
    Michael 1966, 17. Juli 2009
    #3
  4. Hajo_Zi
    Hajo_Zi Erfahrener User

    Letzte leere Zelle in Zeile neben heutigem Datum finden.

    Hallo Michael,

    ich sehe Deine Datei nicht. Ich würde es so lösen.
    Option Explicit
    Dim LoLetzte As Long

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With Sheets("Tabelle1")
    LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
    .Cells(LoLetzte, 3) = Time ' Ebndzeit in Spalte C
    End With
    End Sub

    Private Sub Workbook_Open()
    With Sheets("Tabelle1")
    LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
    .Cells(LoLetzte, 1) = Date ' Datum in Spalte A Schreiben
    .Cells(LoLetzte, 2) = Time ' Zeit in Spalte B
    End With
    End Sub

    Gruß Hajo
     
    Hajo_Zi, 17. Juli 2009
    #4
  5. Hallo Hajo,

    vielen Dank. Das funktioniert ja echt super gut.

    Ich bin begeistert. Die Idee, nicht nach einem Datum zu suchen, sondern dieses auch eintragen zu lassen ist ja viel naheliegender. Hätte ich auch drauf kommen können.

    Das Ziel ist manchmal so nah, sodass man es nicht mehr sieht.

    Danke noch mal

    Gruß Michael
     
    Michael 1966, 17. Juli 2009
    #5
  6. miriki Erfahrener User
    (Hmmm... "Michael 1966" würde auch auf mich passen... ;-) )

    Es würde mehrere Ansätze geben, das zu realisieren, aber ich würde in jedem Fall empfehlen:

    Ändere die Summen-Spalte auf B ab, daß dort, und immer dort, die Tages-Summe steht. Wenn sie mal in D, mal in F oder wo auch immer steht, ist eine Gesamt-Summe ziemlich schwierig herauszubekommen.

    Wenn Du also in Spalte A (ab Zeile 2) das Datum vom 1. Januar bis zum 31. Dezember hast, könnte in B2 sowas wie =summe(e2;h2;k2;n2; ... ) stehen. In z.B. E2 dann wie gehabt =d2-c2 und in h2, k2, ... entsprechend.

    Wenn Du diese Formeln die komplette Spalte herunterziehst, braucht das Öffnen/Schließen-Makro nur jeweils Start/End-Zeit eintragen, was ja bislang auch im Ansatz passiert.

    2 Probleme, die also beim Eintragen jetzt auftreten, wenn mehrmals am Tag geöffnet / geschlossen wird:
    a) In welcher Zeile muß der Eintrag erfolgen?
    b) In welcher Spalte muß der Eintrag erfolgen?

    Problem a) läßt sich relativ simpel erledigen, wenn das Jahr lückenlos in Spalte A steht. Man muß nur noch den "Tag des Jahres" bestimmen und hat dann die Zeile.

    Wenn man vom aktuellen Datum ("int(now())") das Datum des 1. Januars des gleichen Jahres ("dateserial(year(now()),1,1)") abzieht, hat man den Tag des Jahres von 0 an beginnend. Da die 1. Zeile der Einträge 2 ist, muß dann nur noch 2 addiert werden.

    Problem b) ist schon etwas aufwendiger (aufwändiger? *sträub*) Hier müßte in einer Schleife ab Spalte C (beim Öffnen) bzw. D (beim Schließen) geprüft werden, ob die Zelle bereits mit einem Wert belegt ist und dann ggf. 3 Spalten weiter erneut überprüft werden.

    Code:
    option explicit
    
    private function FindeZeile() as long
        dim y as long
        y = int(now()) - dateserial(year(now()),1,1) + 2
        findezeile = y
    end function
    
    private function FindeSpalte(y as long, n as long) as long
        dim x as long
        x=2+n
        while trim$(cells(y,x).value)<>""
            x = x+3
        wend
        findespalte = x
    end function
    
    Private Sub Workbook_Open()
        y = findezeile()
        x = findespalte(y,1)
        cells(y,x).value = now()
    End Sub
    
    Private Sub Workbook_BeforeClose(Cancel As Boolean) 
        y = findezeile()
        x = findespalte(y,2)
        cells(y,x).value = now()
    end sub
    Mit dieser Version muß jetzt entsprechend die Spalte A mit dem Datum und durch Formeln die Spalten B mit der Summe des Tages sowie E, H, K, ... mit der Dauer der Session vorbelegt werden.

    Für weiteren Komfort könnte das Makro auch das Füllen der Datums-Angaben und Formeln erledigen. Aber so, wenn auch aus dem Stegreif und ungetestet, in der Art müßte deutlich werden, wie man das angehen könnte, oder?

    Gruß, Michael
     
    miriki, 17. Juli 2009
    #6
  7. Hallo Miriki,

    auch bei Dir möchte ich mich ganz herzlich für die Mühe bedanken. Die Gedanken die Du dir gemacht hast, bauen wirklich auf meine Idee auf. Ich habe eben den Code von Hajo angewendet, ist etwas anders, aber sehr gut.

    Ich hätte auch gar nicht mit so schnellen Ergebnissen gerechnet.

    Vielen Dank

    Gruß
    Michael
     
    Michael 1966, 17. Juli 2009
    #7
Thema:

Letzte leere Zelle in Zeile neben heutigem Datum finden.

Die Seite wird geladen...
  1. Letzte leere Zelle in Zeile neben heutigem Datum finden. - Similar Threads - Letzte leere Zelle

  2. VBA - letzte nicht-leere Spalte

    in Microsoft Excel Hilfe
    VBA - letzte nicht-leere Spalte: Moin, liebe VBA-Spezis, mit Cells(99, Columns.Count).End(xlToLeft).Column bestimme ich die Spaltenzahl der letzten benutzten Zelle in Zeile 99. Soweit, so klar. Nun habe ich aber Formeln in...
  3. Letzten 2 Zeichen löschen, leere Zellen überspringen.

    in Microsoft Excel Hilfe
    Letzten 2 Zeichen löschen, leere Zellen überspringen.: Hallo, ich suche nach einer Formel, die die letzten 2 Zeichen in einer Spalte löscht, aber die leeren Zellen überspringt. Die Formel die ich zur Zeit nutze überspringt die leeren Zellen nicht,...
  4. Hyperlink in letzte leere Zelle springen

    in Microsoft Excel Hilfe
    Hyperlink in letzte leere Zelle springen: Hallo, ich möchte einen Hyperlink machen, der von Tabelle1 in Tabelle2 in die letzte leere Zelle springt. Mit folgender Formel habe ich es versucht. Ich springe zwar damit in die Tabelle2 aber...
  5. Wenn Zelle leer, dann letzte Zelle oberhalb mit Wert einfügen

    in Microsoft Excel Hilfe
    Wenn Zelle leer, dann letzte Zelle oberhalb mit Wert einfügen: Hallo! Habe eine (Buchhaltungs-Journal)-Tabelle, in der die Kostenstelle immer nur für die erste Zeile angeführt ist, für die weiteren Zeilen dieser Kostenstelle nicht: mit welcher Formel kann ich...
  6. aus Tabelle in Tabelle kopieren, dabei letzte beschriebene Zelle,erste leere Zelle

    in Microsoft Excel Hilfe
    aus Tabelle in Tabelle kopieren, dabei letzte beschriebene Zelle,erste leere Zelle: Hallo Allerseits, ich habe mal wieder ein Problem..... Ich möchte gerne Daten aus verschiedenen Tabellenblätter in ein Tabellenblatt kopieren. Beim Kopieren aus den Tabellenblättern soll ab A2...
  7. Bezug auf letzte Zelle mit Wert in Spalte mit teils mehreren leeren Zellen

    in Microsoft Excel Hilfe
    Bezug auf letzte Zelle mit Wert in Spalte mit teils mehreren leeren Zellen: Hallo zusammen, ich bin etwas (sehr) aus der Übung und komme mit folgendem Problem nichtweiter: Ich habe Spalte H, in der ich Geldbeträge ausrechne. Hier kommt es vor, dass eine, teils auch...
  8. Dynamisch die letzten zwölf "nicht leeren" Zellen

    in Microsoft Excel Hilfe
    Dynamisch die letzten zwölf "nicht leeren" Zellen: Dynamisch die letzten zwölf "nicht leeren" Zellen Hallo, vielleicht kann mir jemand helfen der sich etwas mehr mit Excel auskennt als ich *was nicht schwer ist* ;-) Ich soll ein...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden