Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1408to1412
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
Text in Zelle als Messagebox ausgeben
14.02.2015 21:09:29
Markus
Hallo, ich bräuchte bei einem kleinen VGA Programm Hilfe.
Ich habe ca. 10 Leute, die Namen stehen z.B. in Spalte D in Reihen 1 bis 10. In Spalte E stehen rechts neben ihren Namen Geldbeträge die Sie eingezahlt haben.
Ich möchte jetzt gerne, den niedrigsten Geldbetrag suchen und den Namen der dazugehört, als Messagebox ausgeben. Sollten mehrere Leute gleich wenig eingezahlt haben, sollten alle Namen in einer Messagebox ausgegeben werden.
(Am besten wäre noch, wenn nicht nur der NAme sondern auch noch der Geldbetrag in der Mesagebox ausgegebn wird, also z.B. wenn Richard in Spalte D4 am wenigsten eingezahlt hat (bspw. mit 100€ in E4), dann sollte in der Message Box ausgegeben werden: "Richard hat bisher nur 100€ eingezahlt" Das müsste aber nicht unbedingt sein, der Name wäre schon super.
Ich möchte mich schon mal für die Mühe bedanken,
Viele Grüße
Markus

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text in Zelle als Messagebox ausgeben
14.02.2015 23:25:45
Oberschlumpf
Hi Markus
hier, guck mal
https://www.herber.de/bbs/user/95766.xls
Erklärung zum Code
Teil 1
"Option Explicit" erzwingt das Deklarieren von Variablen
(ist kein Muss aber sehr zu empfehlen, da bei mehreren 100 Codezeilen schnell die Übersicht über die Variablen verloren gehen kann, Außerdem werden so Tippfehler sofort "angemeckert".
Teil 1.1
Die im Code verwendeten Variablen werden deklariert
Teil 2
Bei der Variablen larUnsort handelt es sich um eine Array-Variable, die mehr als nur einen Wert annehmen kann.
Dieser Variablen werden in der direkt folgenden For/Next-Schleife die noch unsortierten Einträge in Spalte D + E übergeben.
Teil 3
Nun werden die Spalten D + E nach Spalte E aufsteigend sortiert.
So steht also der kleinste Wert mit der zugehörigen Peron an oberster Stelle.
Oder bei gleichen kleinsten Werten stehen alle Personen mit dem kleinsten Wert in den obersten Zeilen.
In der darauf folgenden For/Next-Schleife wird die Zeile gesucht, die im Vergleich zur vorhergehenden Zeile einen höheren Wert enthält.
Wenn gefunden, weiß der Code, dass hier die Suche nach dem/den kleinsten Wert(en) zu ende ist, da ja aufgrund der Sortierung der nächst größere Wert gefunden wurde.
Die For/Next-Schleife wird mit "Exit For" verlassen.
Teil 4
Zuerst wird wieder eine Array-Variable, larSort zur Aufnahme von Werten vorbereitet.
In der jetzt folgenden For/Next-Schleife werden NUR DIE Zeilen berücksichtigt, die den/die kleinsten Wert(en) enthalten.
Diese kleinsten Werte oder Wert wird inklusive Name an die Array-Variable übergeben.
Teil 5
Wir wollen die Liste ja nicht sortiert angezeigt haben.
Deswegen wird nun, wieder in einer For/Next-Schleife, der Originalzustand der Liste wieder hergestellt.
Die zuvor eingetragenen Personen + deren Werte stehen also wieder in den gleichen Zeilen wie vor der Sortierung.
Teil6
Nun wird in einer letzten For/Next-Schleife die String-Variable lstrMsg mit den gefundenen, kleinsten Werten (inklusive Personen + gewünschten sonstigen Texten) gefüllt.
Zum Schluß wird dann eine MsgBox mit dem gewünschten Inhalt angezeigt.
Hilfts?
Ciao
Thorsten

Anzeige
AW: Text in Zelle als Messagebox ausgeben
15.02.2015 02:52:03
Matthias
Hallo Markus
Dim MinWert, Bereich As Range, Rng As Range, strg$, Zz&
Set Bereich = Range("E1:E10")
MinWert = Application.WorksheetFunction.Min(Bereich)
For Each Rng In Bereich
If Rng = MinWert Then Zz = Zz + 1: strg = strg & vbLf & Rng.Offset(, -1)
Next
MsgBox strg & vbLf & vbLf & IIf(Zz > 1, "haben", "hat") & " bisher nur " & MinWert & " €uro eingezahlt"


Userbild
Gruß Matthias

Anzeige
AW: Text in Zelle als Messagebox ausgeben
16.02.2015 12:50:36
Markus
Danke Matthias, funktioniert einbahnfrei!
Viele Grüße
Markus

AW: Text in Zelle als Messagebox ausgeben
16.02.2015 13:25:12
Oberschlumpf
Hi Markus
a) bekomme ich auf meine Antwort auch eine Rückmeldung von dir?
b) Trag mal 1 oder 2 weitere Personen in Zeile 11+12 mit den kleinsten Beträgen ein, und nutz dann noch mal das Makro von Matthias.
Es wird dann nicht funktionieren, weil das Makro, so, wie es jetzt angezeigt wird, maximal nur bis Zeile 10 "kontrolliert".
Ciao
Thorsten

343 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige