Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Text in Zelle als Messagebox ausgeben

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

Anzeige

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
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Text in Zelle als Messagebox ausgeben


Schritt-für-Schritt-Anleitung

Um den niedrigsten Geldbetrag in einer Excel-Tabelle zu finden und den dazugehörigen Namen in einer Messagebox auszugeben, kannst du folgenden VBA-Code verwenden:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Sub NiedrigsterBetrag()
        Dim MinWert As Double
        Dim Bereich As Range
        Dim Rng As Range
        Dim strg As String
        Dim Zz As Integer
    
        Set Bereich = Range("E1:E10") ' Definiere den Bereich für die Geldbeträge
        MinWert = Application.WorksheetFunction.Min(Bereich) ' Finde den niedrigsten Wert
    
        For Each Rng In Bereich
            If Rng.Value = MinWert Then
                Zz = Zz + 1
                strg = strg & vbLf & Rng.Offset(0, -1).Value ' Füge den Namen hinzu
            End If
        Next
    
        MsgBox strg & vbLf & vbLf & IIf(Zz > 1, "haben", "hat") & " bisher nur " & MinWert & " € eingezahlt"
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus, indem du auf Entwicklertools > Makros klickst und das Makro NiedrigsterBetrag auswählst.


Häufige Fehler und Lösungen

  • Fehler: "Typen unverträglich"

    • Lösung: Stelle sicher, dass alle Zellen im Bereich E1:E10 Zahlen enthalten. Textwerte können diesen Fehler verursachen.
  • Fehler: MsgBox zeigt nichts an

    • Lösung: Überprüfe, ob der Bereich korrekt definiert ist und ob tatsächlich Werte vorhanden sind.
  • Fehler: Makro funktioniert nicht für zusätzliche Zeilen

    • Lösung: Ändere den Bereich in Set Bereich = Range("E1:E20"), um auch zusätzliche Personen zu berücksichtigen.

Alternative Methoden

Falls du keine VBA-Programmierung verwenden möchtest, kannst du folgende Excel-Funktionen nutzen:

  1. MIN-Funktion: Verwende =MIN(E1:E10) in einer Zelle, um den niedrigsten Betrag zu finden.
  2. SVERWEIS: Kombiniere die MIN-Funktion mit SVERWEIS, um den Namen zu finden, z.B.:
    =SVERWEIS(MIN(E1:E10), D1:E10, 1, FALSE)

Diese Methoden geben jedoch keine Messagebox aus, sondern nur die Werte in den Zellen.


Praktische Beispiele

  • Beispiel 1: Angenommen, die Namen stehen in Spalte D und die Beträge in Spalte E. Wenn Richard in D4 steht und 100 € in E4 eingezahlt hat, wird die Messagebox zeigen:

    Richard hat bisher nur 100 € eingezahlt
  • Beispiel 2: Wenn es mehrere Personen mit dem gleichen niedrigsten Betrag gibt, z.B. Richard und Anna mit 100 €, wird die Messagebox so aussehen:

    Richard
    Anna
    haben bisher nur 100 € eingezahlt

Tipps für Profis

  • Variablen-Deklaration: Nutze Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Tippfehler zu vermeiden.

  • Fehlerbehandlung: Füge eine Fehlerbehandlung in dein Makro ein, um unerwartete Fehler elegant zu behandeln:

    On Error GoTo Fehlerbehandlung
    '... dein Code ...
    Exit Sub
    Fehlerbehandlung:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Kann ich den Bereich der Zellen anpassen? Ja, du kannst den Bereich ganz einfach ändern, indem du Set Bereich = Range("E1:E10") anpasst.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, der VBA-Code sollte in allen modernen Excel-Versionen funktionieren, die VBA unterstützen, wie Excel 2010, 2013, 2016, 2019 und Office 365.

3. Wie kann ich die Messagebox anpassen? Du kannst den Inhalt der MsgBox nach deinen Wünschen anpassen, indem du den Text in der entsprechenden Zeile änderst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige