662 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo

 

Ich habe mir eine Fehlersammelkarte gebaut. Diese Fragt per Msg-Box die Artikeldaten ab und schreibt diese dann in den Kopf der Fehlersammelkarte.

 

Wenn der Mitarbeiter fertig mit der Kontrolle ist drückt er wieder den Button für eine neue Fehlersammelkarte und nach einer Druckabfrage werden die Daten für den Fehlersammelkarten Kopf erneut abgefragt und die alten Daten überschrieben.

 

Ich möchte als Logbuch die Daten im Kopf der Fehlersammelkarte in einem zweiten Tabellen Blatt (gleich Datei) mit schreiben. So würde ich sehen was der Mitarbeiter über den Tag kontrolliert hat.

 

Ich bekomme den Code aber nicht hin das die Daten automatisch fortlaufend geschrieben werden.

 

Könnt Ihr mir da eventuell helfen.

Wenn Ihr mir sagt wie ich eine Datei hier einstellen kann dann kann ich die Fehlersammelkarte gern einstellen sonst halt nur per PN.

 

Danke schon mal

10 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

du kannst die Beispieldatei z.B. [url=http://www.filehorst.de/]hier[/url] hochladen und den Link dann im Forum posten.

Da du die Daten ja per Inputbox abfragst, wäre es wohl am einfachsten die Daten nicht nur in den Kopf sondern auch gleich in das zweite Tabellenblatt zu schreiben.

Gruß

M.O.
0 Punkte
Beantwortet von
Hier ist mal der Link zu meiner Tabelle

[url=http://filehorst.de/d/cJkoyEkh]Datei von filehorst.de laden[/url]

Ich hatte es mir auch so vorgestellt das die Daten direkt mit der Eingabe auf das zweite Blatt geschrieben werden.

Aber genau dabei bin ich hängen geblieben.

Grüße
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

füge bei der Dimensionierung noch ein:
[code]Dim lngZeile As Long[/code]
Dann ergänze dein Makro Sub FSK_Dateneingabe() nach der Zeile
[code] Range("d4").Value = Time                                 ' Fügt die aktuelle Zeit ein[/code]
wie folgt:    
  [code]With Worksheets("Logbuch")
   lngZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
    .Cells(lngZeile, 1) = strVerant_Artikelnummer             'Artikelnummer
    .Cells(lngZeile, 2) = Date                                'Kontrolldatum
    .Cells(lngZeile, 3) = strVerant_Schicht                   'Schicht
    .Cells(lngZeile, 6) = strVerant_Name                      'Name
    .Cells(lngZeile, 7) = strVerant_Personal                  'Personalnummer
  End With
                        
End Sub[/code]
Da ich keine Ahnung habe, was du bei Zeit Start und Zeit Ende eintragen willst, habe ich das mal weggelassen. Aber das kannst du ja entsprechend ergänzen.

Gruß

M.O.
0 Punkte
Beantwortet von
Super vielen Dank.

Ich habe das gerade angepasst auf meine Tabelle und es funktioniert bestens.

Danke.

Die Start Zeit ist quasi der Kontrollstart. Ich überlege ob der Start auch gleichzeitig das Ende von vorherigen Vorgang seien soll wäre dann ja ziemlich simpel per Formel zu machen.

Wie Aufwändig ist es beim drücken der Ja Taste bei der Druckabfrage eine Uhrzeit in die Spalte e bei dem vorgeschriebenen Datensatz zu schreiben.

Danke
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

du kannst ja bei drücken der JA-Taste die Uhrzeit in eine Variable schreiben, die du natürlich vorher entsprechend dimensionieren musst (unter Option Explicit):
[code]Dim dbZeit As Double[/code]

Ergänze im Makro Private Sub NeueFSK_Click() vor
[code]Call Löschen[/code]
die Zeile
[code]dbZeit = Time[/code]
Die With-Anweisung aus meiner Antwort 3 ergänzt du wie folgt:
[code].Cells(lngZeile, 4) = dbZeit  [/code]
Soll das auch gleich die Ende-Zeit sein, dann noch
[code].Cells(lngZeile, 5) = dbZeit  [/code]
Gruß

M.O.
0 Punkte
Beantwortet von
Perfekt so soll es sein.
0 Punkte
Beantwortet von
Halt da ist mir noch was aufgefallen.

Bei dbZeit wird der Wert in die gleich Spalte eingetragen wie der momentane Datensatz. Wenn ich es als Ende für den Vorherigen Datensatz nehmen möchte muss es aber eine Zeile weiter oben stehen.

Das muss ich dann mit end  (x1up).offset machen oder.

Grüße Thomas
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Thomas,

du kannst das auch einfach so machen:
[code].Cells(lngZeile - 1, 5) = dbZeit  [/code]

Gruß

M.O.
0 Punkte
Beantwortet von
Guten morgen


.cells (lngZeile, -1, 5) = dbzeit geht nicht es kommt ein Laufzeitfehler

Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft.

Grüße
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

du darfst zwischen lngZeile und -1 kein Komma setzen. Siehe die richtige Syntax in Antwort 8!

Gruß

M.O.
...