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

Forumthread: min und max wert in listbox per vba

min und max wert in listbox per vba
20.11.2008 12:47:01
kirsche
hallo leute,
dank beverly und tino bin ich ein ganzes stück schlauer und weiter gekommen, ich finde dieses forum einfach klasse und möchte ein großes lob euch allen aussprechen.
nun hab ich aber doch noch eine frage: in zwei weiteren textboxen möchte ich die kleinste und die größte spanne ausgeben, kann mir da jemand auf die sprünge helfen?
https://www.herber.de/bbs/user/56981.xls
gruß kirsche
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: min und max wert in listbox per vba
20.11.2008 13:15:33
JogyB
Hallo.

Dim i As Long
Dim listArr() As Double
ReDim listArr(0 To Me.ListBox1.ListCount - 1)
For i = 0 To Me.ListBox1.ListCount - 1
listArr(i) = Me.ListBox1.List(i)
Next
Me.txt_max = Application.Max(listArr)
Me.txt_min = Application.Min(listArr)


Die Bezeichnung stimmen jetzt natürlich nicht, aber ich kann hier keine Dateien runterladen.
Gruss, Jogy

Anzeige
AW: min und max wert in listbox per vba
20.11.2008 13:32:35
kirsche
hallo jogy,
soweit funktioniert es, danke. wie kann ich die spalte ändern, denn momentan sucht das makro in der 1.spalte und somit die kleinste und größte artikelnummer. ich möchte aber die 2.spalte durchsuchen.
das makro habe ich etwas angepasst:

Public Sub min_max()
Dim i As Long
Dim listArr() As Double
ReDim listArr(0 To ListBox1.ListCount - 1)
For i = 0 To ListBox1.ListCount - 1
listArr(i) = ListBox1.List(i)
Next
TextBox2 = Application.max(listArr)
TextBox3 = Application.Min(listArr)
End Sub


gruß kirsche

Anzeige
AW: min und max wert in listbox per vba
20.11.2008 13:49:00
JogyB
Hi.
listArr(i) = ListBox1.List(i, 1)
Gruss, Jogy
AW: min und max wert in listbox per vba
20.11.2008 14:07:00
kirsche
hallo jogy,
das hat super geklappt, ich hab es schon mit +1 in diversen versionen versucht, auf komma 1 bin ich nicht gekommen.
nun hab ich aber noch ein problem, manchmal ist kein wert vorhanden in spalte 1, dann springt der debugger an, wie kann ich das umgehen?
gruß kirsche
Anzeige
AW: min und max wert in listbox per vba
20.11.2008 14:15:00
kirsche
sorry, hab nicht richtig nachgedacht. für den max-wert habe ich noch eine if-anweisung eingefügt.
If ListBox1.List(i, 1) "" Then
listArr(i) = ListBox1.List(i, 1)
End If
aber nun wirft er mir beim min-wert 0 aus. ist ja auch korrekt, nur möchte ich den nächstgrößeren wert als 0 als min-wert angezeigt bekommen.
gruß kirsche
Anzeige
AW: min und max wert in listbox per vba
20.11.2008 15:03:58
JogyB

Public Sub min_max()
Dim i As Long
Dim listArr() As Double
Dim offSet As Long
ReDim listArr(0 To Me.ListBox1.ListCount - 1)
offSet = 0
For i = 0 To Me.ListBox1.ListCount - 1
If Not IsNull(Me.ListBox1.List(i, 1)) Then
listArr(i - offSet) = Me.ListBox1.List(i, 1)
Else
offSet = offSet + 1
End If
Next
ReDim Preserve listArr(0 To UBound(listArr) - offSet)
Me.TextBox2 = Application.Max(listArr)
Me.TextBox3 = Application.Min(listArr)
End Sub


Sollte gehen.
Noch allgemein: Lass das Me. vor den ganzen Controls besser stehen. Wenn Du jemals den Code in ein anderes Modul auslagern willst, dann musst Du anstelle von Me zwingend den Namen des UserForm eintragen. Mit dem Me. kannst Du das für alle Controls mit Suchen/Ersetzen erledigen, ansonsten musst Du es für jedes Control einzeln machen. Sieht jetzt hier nicht schlimm aus, bei längerem Code kann das ziemlich nervig sein.
Gruss, Jogy

Anzeige
AW: min und max wert in listbox per vba
20.11.2008 15:20:15
kirsche
super, ich danke dir.
ich lade die tabelle mit hoch, vielleicht sucht ja jemand so etwas nochmal und dann steht die lösung im archiv.
https://www.herber.de/bbs/user/56985.xls
gruß kirsche

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Min und Max Werte in Listbox per VBA ermitteln


Schritt-für-Schritt-Anleitung

Um die minimalen und maximalen Werte aus einer Listbox in Excel mittels VBA zu ermitteln, folge diesen Schritten:

  1. Öffne den VBA-Editor in Excel (drücke ALT + F11).

  2. Füge ein UserForm hinzu und platziere eine Listbox (ListBox1) sowie zwei Textboxen (TextBox2 für den Maximalwert und TextBox3 für den Minimalwert).

  3. Füge den folgenden VBA-Code in das UserForm ein:

    Public Sub min_max()
       Dim i As Long
       Dim listArr() As Double
       Dim offSet As Long
       ReDim listArr(0 To Me.ListBox1.ListCount - 1)
       offSet = 0
       For i = 0 To Me.ListBox1.ListCount - 1
           If Not IsNull(Me.ListBox1.List(i, 1)) Then
               listArr(i - offSet) = Me.ListBox1.List(i, 1)
           Else
               offSet = offSet + 1
           End If
       Next
       ReDim Preserve listArr(0 To UBound(listArr) - offSet)
       Me.TextBox2 = Application.Max(listArr)  ' Maximalwert
       Me.TextBox3 = Application.Min(listArr)  ' Minimalwert
    End Sub
  4. Starte das UserForm und fülle die Listbox mit Werten, um die Funktionalität zu testen.


Häufige Fehler und Lösungen

  • Problem: Fehler beim Zugriff auf Listbox-Werte

    • Lösung: Stelle sicher, dass Du die richtige Spalte der Listbox angibst. Nutze ListBox1.List(i, 1) für die zweite Spalte.
  • Problem: Debugger springt an, wenn kein Wert vorhanden ist

    • Lösung: Implementiere eine If-Bedingung, um leere Werte zu ignorieren:
    If ListBox1.List(i, 1) <> "" Then
        listArr(i) = ListBox1.List(i, 1)
    End If
  • Problem: Min-Wert wird als 0 angezeigt

    • Lösung: Verwende die oben genannte Methode mit If Not IsNull(...) und passe den Code an, um nur gültige Zahlen zu berücksichtigen.

Alternative Methoden

Wenn Du keine VBA-Programmierung verwenden möchtest, kannst Du die MIN und MAX Funktionen direkt in einer Excel-Tabelle nutzen. Zum Beispiel:

  • Um den Maximalwert zu ermitteln:

    =MAX(A1:A10)
  • Um den Minimalwert zu ermitteln:

    =MIN(A1:A10)

Diese Methoden sind nützlich, wenn Du schnell eine Analyse ohne VBA durchführen möchtest.


Praktische Beispiele

Hier sind einige praktische Beispiele für den Einsatz von VBA Min und VBA Max:

  1. Min und Max aus einer Listbox:

    • Erstelle eine Listbox mit Zahlen und wende die oben genannten Methoden an, um die Werte in den Textboxen anzuzeigen.
  2. Dynamische Datenquelle:

    • Verbinde die Listbox mit einer Tabelle, sodass die Daten automatisch aktualisiert werden, wenn sich die Tabelle ändert.

Tipps für Profis

  • Verwende ReDim Preserve: Dies ist wichtig, um die Dimensionen des Arrays beizubehalten, nachdem Du die Anzahl der Elemente reduziert hast.
  • Behalte den Me.-Bezug: Wenn Du den Code in andere Module verschieben möchtest, musst Du den Bezug anpassen.
  • Fehlerbehandlung einfügen: Implementiere eine Fehlerbehandlung, um unerwartete Situationen elegant zu handhaben, z.B. wenn die Listbox leer ist.

FAQ: Häufige Fragen

1. Wie kann ich die Listbox mit Werten füllen? Du kannst die Listbox im UserForm mit Werten aus einem Bereich füllen, indem Du den folgenden Code verwendest:

For i = 1 To 10
    Me.ListBox1.AddItem i
Next i

2. Kann ich die Werte in der Listbox sortieren? Ja, Du kannst die Werte vor dem Hinzufügen in die Listbox sortieren, indem Du sie in ein Array speicherst, sortierst und dann hinzufügst.

3. Was mache ich, wenn ich nur positive Werte benötige? Füge eine Filterbedingung hinzu, um nur positive Werte in das Array aufzunehmen:

If ListBox1.List(i, 1) > 0 Then
    listArr(i - offSet) = ListBox1.List(i, 1)
End If

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige