Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
664to668
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
664to668
664to668
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kann man Zahlen in Listbox kürzen bzw. runden

Kann man Zahlen in Listbox kürzen bzw. runden
15.09.2005 16:53:23
Horst
Hallo User,
ich habe in meine 3-spaltige Listbox in Spalte 1 Text und in die beiden anderen Spalten Zahlen mit
lst_Multi.List = Range(Worksheets("Berechnungen").Cells(41, 3), Worksheets("Berechnungen").Cells(irowl, 5)).Value
eingelesen. Obwohl in den Ursprungszellen (siehe Code) im Tabellenblatt über Zahlenformat nur 2 Stellen nach dem Komma zugelassen sind, erscheinen in der Listbox in Spalte 2 und 3 die Zahlen mit wesentlich mehr als 2 Stellen nach dem Komma. Wie lautet der Code, damit ich diese Zahlen entweder beim Einlesen in die Listbox bzw. im Nachinein in der Listbox auf 2 Stellen nach dem Komma kürzen bzw. runden kann.
Danke für die Mithilfe !
Horst

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kann man Zahlen in Listbox kürzen bzw. runden
15.09.2005 21:54:18
Ramses
Hallo
Als EXCEL-Profi solltest du eigentlich wissen, dass ein FORMAT keine Änderung am Zellinhalt vornimmt, sondern nur die Darstellung am Bildschirm.
Du musst die Adten über .AddItem der Listbox hinzufügen und vor dem einlesen die Zahl entsprechend runden.
Gruss Rainer
AW: Kann man Zahlen in Listbox kürzen bzw. runden
15.09.2005 22:23:56
Horst
Danke Rainer für die schnelle Antwort,
werde morgen gleichmal versuchen mit additem ans Ziel zu kommen. Bin ja gespannt, ob additem als Alternative zu .List zum Ziel führt. Melde mich dann nochmal und gebe Feedback.
Horst
AW: Kann man Zahlen in Listbox kürzen bzw. runden
16.09.2005 01:15:46
Horst
Hallo,
habe nun mal versucht mit additem die mehrspaltige Listbox zu füllen. Aber wie ich es mir gedacht habe, kann man damit maximal die erste Spalte füllen. In dieser sollen aber gerade keine Zahlen stehen, welche formatiert werden sollen. Für Spalte 2 und 3 war dann wieder der list-Befehl nötig.
Also habe ich vor dem Einlesen mit FORMAT eine Änderung des Zellinhalts erfolgreich vorgenommen. Dabei wurde der gesamte Zahlenwert der Ursprungszelle auf zwei Stellen hinter dem Komma gekürzt, ein Runden alleine hätte nur die Darstellung am Bildschirm verändert.
Beispielsweise bin ich so vorgegangen:
Worksheets("Test").Cells(3, 4).Value = Format(Worksheets("Test") _
.Cells(30, 4) - (Sum / monate), "0.00")
Kurz gesagt wurden die vielstelligen Werte aus Zelle 30, 4 nach noch notwendigen mathematischen Verknüpfungen auf zwei Stellen nach dem Komma in Zelle 3, 4 ausgegeben.
Letzendlich konnte ich meinen alten kurzen Code zum Einlesen des mehrspaltigen Listenfeldes beibehalten, ohne über Schleifen und additem zu gehen.
'Jetzt wird die Multilistbox mit Werten gefüttert
Dim irowl As Integer
lst_Multi.List.clear
lst_Multi.ColumnCount = 3
' Liest die Anzahl aller benutzten Zeilen auf dem Arbeitsblatt
irowl = Worksheets("Berechnungen").Cells(Rows.Count, 3).End(xlUp).Row
' Fügt den gesamten Bereich von Zelle 41, 3 bis zum Ende des genutzten Bereiches
' also dort wo meine Werte stehen ins Listenfeld ein
lst_Multi.List = Range(Worksheets("Berechnungen").Cells(41, 3), _ Worksheets("Berechnungen").Cells(irowl, 5)).Value
Vielen Dank nochmal an Rainer, der mir zur Lösungsfindung den Anstoss gab.
Horst
Anzeige
AW: Kann man Zahlen in Listbox kürzen bzw. runden
16.09.2005 06:47:51
Ramses
Hallo
"...Aber wie ich es mir gedacht habe, kann man damit maximal die erste Spalte füllen...."
Wer behauptet sowas ?
Option Explicit

Private Sub CommandButton1_Click()
    Dim i
    Me.Combox1.Clear
    For i = 1 To 10
        'Neuen Eintrag eröffnen
        Me.Combox1.AddItem i
        'Zu diesem Eintrag in Spalte 1 einen Eintrag hinzufügen
        Me.Combox1.List(i - 1, 1) = i & i
    Next i
    Exit Sub
    'Zum einlesen der Tabelle
    Me.Combox1.Clear
    For i = 1 To Range("A65536").End(xlUp).Row
        '1. Spalte
        Me.Combox1.AddItem Cells(i, 1).Value
        '2. Spalte
        Me.Combox1.List(i - 1, 1) = Cells(i, 2).Value
        '3. Spalte
        Me.Combox1.List(i - 1, 2) = Cells(i, 3).Value
        'usw
    Next i
End Sub

Das gleiche Verfahren kannst auch für eine Listbox anwenden.
Gruss Rainer
Anzeige
AW: Kann man Zahlen in Listbox kürzen bzw. runden
16.09.2005 08:24:01
Horst
Hallo Rainer,
vielen Dank für den alternativen Vorschlag. Ich selber hatte bisher noch nicht soweit in die Richtung gedacht und aus der Literatur, welche ich zur Verfügung hatte, war kein solch anschauliches Beispiel ersichtlich. Und das für Listen und Kombibox einzusetzen finde ich sehr interessant...
Horst
AW: Kann man Zahlen in Listbox kürzen bzw. runden
16.09.2005 01:16:05
Horst
Hallo,
habe nun mal versucht mit additem die mehrspaltige Listbox zu füllen. Aber wie ich es mir gedacht habe, kann man damit maximal die erste Spalte füllen. In dieser sollen aber gerade keine Zahlen stehen, welche formatiert werden sollen. Für Spalte 2 und 3 war dann wieder der list-Befehl nötig.
Also habe ich vor dem Einlesen mit FORMAT eine Änderung des Zellinhalts erfolgreich vorgenommen. Dabei wurde der gesamte Zahlenwert der Ursprungszelle auf zwei Stellen hinter dem Komma gekürzt, ein Runden alleine hätte nur die Darstellung am Bildschirm verändert.
Beispielsweise bin ich so vorgegangen:
Worksheets("Test").Cells(3, 4).Value = Format(Worksheets("Test") _
.Cells(30, 4) - (Sum / monate), "0.00")
Kurz gesagt wurden die vielstelligen Werte aus Zelle 30, 4 nach noch notwendigen mathematischen Verknüpfungen auf zwei Stellen nach dem Komma in Zelle 3, 4 ausgegeben.
Letzendlich konnte ich meinen alten kurzen Code zum Einlesen des mehrspaltigen Listenfeldes beibehalten, ohne über Schleifen und additem zu gehen.
'Jetzt wird die Multilistbox mit Werten gefüttert
Dim irowl As Integer
lst_Multi.List.clear
lst_Multi.ColumnCount = 3
' Liest die Anzahl aller benutzten Zeilen auf dem Arbeitsblatt
irowl = Worksheets("Berechnungen").Cells(Rows.Count, 3).End(xlUp).Row
' Fügt den gesamten Bereich von Zelle 41, 3 bis zum Ende des genutzten Bereiches
' also dort wo meine Werte stehen ins Listenfeld ein
lst_Multi.List = Range(Worksheets("Berechnungen").Cells(41, 3), _ Worksheets("Berechnungen").Cells(irowl, 5)).Value
Vielen Dank nochmal an Rainer, der mir zur Lösungsfindung den Anstoss gab.
Horst
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige