acrysis
Goto Top

Ankunft und Abfahrtsskript in Excel per VBA

Morning

Huhu,

ich habe eine Frage bzw. ich komme nicht weiter....ich habe eine Excelliste (Spalte A-L), ich habe es soweit, das wenn ich etwas in E schreibe, er in F die jetzige Uhrzeit schreibt, wenn ich in G ein x mache, das er mir in Spalte H die jetzige Zeit schreibt, damit ich eine Differenz habe wann ich losgefahren und wiedergekommen bin.

Da ich die Liste nicht offen liegen lassen möchte, habe ich mir überlegt das ganze per UserForm zu erstellen (Die Komplettliste ausgeblendet), soweit kein Problem, er schreibt die Spalten A-E voll, in Spalte F schreibt er auch die Uhrzeit....

Nun mein Problem bzw. mein Ende bei VBA, ich möchte noch einen Button erstellen, wo ich die Nummer aus Spalte E (Nummern in Spalte E sind einzigartig) eintrage und ein x schreiben kann, das er dann in die Spalte G setzt, allerdings starten mehrere Leute und er muss sich die Nummer aus Spalte E aus der Liste suche und dahinter ein x setzen um die Fahrt zu beenden.

Sprich die Suche nach einer Nummer in Spalte E und das zugehörige schreiben des x in Spalte G bekomme ich nicht hin. Die Userform ist aufgebaut in 2 Textboxen und 1 Button (Textbox_1 = Nummer, Textbox_2 = x für fertig)


Ich hoffe ich habe es verständlich genug erklärt und ihr könnt mir behilflich sein

Content-Key: 179122

Url: https://administrator.de/contentid/179122

Printed on: April 19, 2024 at 10:04 o'clock

Mitglied: 83928
83928 Jan 18, 2012 at 13:59:37 (UTC)
Goto Top
Hi,

hier ein kleines Beispiel zum anpassen:

Dim rngFind As Range

Set rngFind = Columns(5).Find(2) 'Die Nummer 2 wird hier gesucht  
If Not rngFind Is Nothing Then
    Cells(rngFind.Row, 7) = "x" 'Ein X wird in Spalte G eingetragen  
Else
    MsgBox "Nr nicht vorhanden"  
End If
set rngFind=nothing
Member: Acrysis
Acrysis Jan 19, 2012 at 08:33:45 (UTC)
Goto Top
Das funktioniert nun alles schon sehr gut, allerdings weiß ich nicht was ich machen soll, damit er nachdem ich den button zum bestätigen drücke er mir die beschriebenen Felder aus der Userform löscht

2. Sobald die Fahrt beendet wurde brauche ich den Zeitwert aus Spalte L beidem das x gesetzt wird.
Mitglied: 83928
83928 Jan 19, 2012 at 08:41:02 (UTC)
Goto Top
Zitat von @Acrysis:
Das funktioniert nun alles schon sehr gut, allerdings weiß ich nicht was ich machen soll, damit er nachdem ich den button
zum bestätigen drücke er mir die beschriebenen Felder aus der Userform löscht
Du meinst Du willst den Inhalt der Textfelder löschen??? Wie wäre es mit
Textbox=""  
2. Sobald die Fahrt beendet wurde brauche ich den Zeitwert aus Spalte L beidem das x gesetzt wird.
debug.print cells(rngFind.row,12)
Member: Acrysis
Acrysis Jan 19, 2012 at 09:09:28 (UTC)
Goto Top
Zum 2.: Es reicht wenn es als MsgBox auftaucht damit der jenige weiß wie lange er gebraucht hat.

Der geht irgendwie nicht

MsgBox Cells(rngFind.Row, 12, "hh:nn:ss")

Ohne das "hh:nn:ss" nimmt er es, allerdings in einer unguten Formatierung ;)
Mitglied: 83928
83928 Jan 19, 2012 at 09:20:02 (UTC)
Goto Top
Zitat von @Acrysis:
Zum 2.: Es reicht wenn es als MsgBox auftaucht damit der jenige weiß wie lange er gebraucht hat.

oO
Aber das Du debug.print durch msgbox ersetzen musst, brauche ich Dir nicht zu schreiben, oder? ;)
Member: Acrysis
Acrysis Jan 19, 2012 at 09:26:28 (UTC)
Goto Top
Der geht irgendwie nicht

MsgBox Cells(rngFind.Row, 12, "hh:nn:ss")

Ohne das "hh:nn:ss" nimmt er es, allerdings in einer unguten Formatierung ;)

Naja das war mir klar ;)
Mitglied: 83928
83928 Jan 19, 2012 at 09:32:22 (UTC)
Goto Top
msgbox Format(cells(rngfind.row,12),"hh:mm:ss")  
Member: Acrysis
Acrysis Jan 19, 2012 at 09:58:41 (UTC)
Goto Top
Ahh alles klar nun funktioniert es alles, es fiel mir aber noch auf das wenn ich die fahrt beende und anstatt z.b. der 7403 nur eine 3 eintrage, dass er dann automatisch bei der 7403 das x macht, warum? Ich nahm an er sucht nach der genauen nummer ;)

Anstatt

Set rngFind = Columns(5).Find(2)

hab ich einfach
Set rngFind = Columns(5).Find(TextBox1) genommen, das funktioniert auch bis auf das oben beschrieben problem
Mitglied: 83928
83928 Jan 19, 2012 at 10:14:52 (UTC)
Goto Top
OK, in der Standardeinstellung sucht Find anscheinend nur nach einem Teil des Zellinhalts. Um den ganzen Zellinhalt zu vergleichen kann man die XlLookAt-Konstante xlWhole benutzen. So zumindest steht es sinngemäß in der Excel-Hilfe.

Set rngFind = Columns(5).Find(What:=TextBox1, LookAt:=xlWhole)
Mitglied: 76109
76109 Jan 19, 2012 at 10:42:45 (UTC)
Goto Top
Hallo @all!

Find verwendet ohne Parameter die letzte Sucheinstellung, wie sie von der Funktion Find oder der Suchfunktion in der Excel-Oberfläche verwendet wurde. Von daher müssen/sollen die Optionen immer entsprechend gesetzt werden.

Gruß Dieter
Member: Acrysis
Acrysis Jan 19, 2012 at 10:43:06 (UTC)
Goto Top
Ich bedanke mich für deine Geduld und hilfe abaaba, es funktioniert alles so wie ich es mir vorgestellt habe ;)
Mitglied: 83928
83928 Jan 19, 2012 at 11:00:29 (UTC)
Goto Top
Zitat von @76109:
Hallo @all!

Find verwendet ohne Parameter die letzte Sucheinstellung, wie sie von der Funktion Find oder der Suchfunktion in der
Excel-Oberfläche verwendet wurde. Von daher müssen/sollen die Optionen immer entsprechend gesetzt werden.

Gruß Dieter

Axo, wieder was gelernt ;)