[Excel] VBA Button für Timestemp und Platzvergabe


miki12za

Grünschnabel
Hallo zusammen,

ich danke allen hier. Ihr hab mir in Vergangenheit bei einigen Themen geholfen.

Ich habe jetzt ein Excel Thema, wo ich nicht weiterkomme.

Ich habe eine Datei mit mehreren Tabellen.

Tabelle "Namensliste":
Hier habe ich mehrere Personen und neben jedem Namen kommt ein Button.
Button Funktion;

Visual Basic:
Sub B_Daniel_1()
If Range("D7") = "" Then
Range("D7") = Format((Time), "hh:mm:ss")
Range("E7") = "JA"
Else
Range("D7").Clear
Range("E7").Clear
Range("E7") = "NO"
End If
End Sub
Problem:

1. Wie kann ich die Zeit aus der D7 für eine automatisierte Rankingliste (in F7) benutzen.
2. Wie kann ich die "Rankingliste" fixieren? Wenn ich jemanden vom Platz 5 "rausnehme" sollen die nachfolgenden Plätze sich nicht verändern.Platz 6 -10 blieben die User unverändert. Der Platz 5 wird der jüngsten Zeit aus Spalte D gegeben und weiter wird mit Platz11 gemacht.

Ich hoffe jemand kann mir helfen.

Vielen vielen Dank im Voraus.
 
Zuletzt bearbeitet von einem Moderator:

Yaslaw

n/a
Moderator
1) Makroaufnahme starten, dann
2) Nach D7 sortieren
3) in die ersten 3 Zeilen den Rang eintragen und herunterkopieren (mit der Maus runterziehen)
4) Makroaufnahme stoppen und Code anschauen
 

miki12za

Grünschnabel
Hallo Yaslaw,

danke für den ersten Tipp.

Ich habe mir den Code angeschaut aber stehen voll auf dem Schlauch.

Ich würde gerne ohne Sortierung arbeiten. Eigentlich will ich eine in Spalte F an der Zeit (Timestemp) gemessen die Rangliste erstellen.
Weiters geht es mir um die Fixierung des Ranges.
Durch "Range("D7").Clear" wird die Zeit aus der Zeile gelöscht. Hier soll dieser Rangnummer frei werden ohne dass sich die nachfolgenden Plätze verändern.

Danke
 

Yaslaw

n/a
Moderator
Hä? Eine Rangliste ist eine sortierte Liste.
Irgendwas musst du sortieren um die Ränge zu ermitteln. Wenn nicht die Liste, dann ein Array den du im VBA zusammensetzt un dihn sortierst. Es gibt aber keine fertigen Sortierfunktion für Arrays von Microsoft. Also musst du dir www noch eine Arraysortierfunktion suchen.
1a) Mit einem Makro alle Werte in ein Array schreiben
1b) und alle Zeilenummern in einen zweiten Array schreiben.
2) Eine Funktion schreiben, welche den Wertearray sortiert und den Zeilennummerarray mitsortiert
3) Den Zeilennummerarray ist jetzt die Rangliste. Also diesen abarbeiten und in den entsprechenden Zeilen den Rang (index des Arrays) eintragen.

Klingt für mich toll für Leute die gerne und gut programmieren. Aber in deinem Fall würde ich die Sortierung von Excel verwenden - also über das Excelsheet.
Ggf kannst du ja dein Sheet kopieren, das sortieren und dann im original den Rang nachführen.