Excel 2016 ListView
#1
Photo 
Hallo Leute,

ich bräuchte Eure Unterstützung.

In meiner Excel-Datei mit mehreren Blättern lese ich aus allen Blättern mit ListView drei Zellen aus. In der Ansicht, werden die Nummerischen Werte zum Teil mit drei Nachkommastellen aufgeslistet.
Obwohl in den Blättern die Zellen nur zwei Nachkommastellen haben. 
Ich habe es auch schon versucht in Code-Zeilen die Ausgabe zu formatieren. Leider ohne Erfolg.

Anbei ein Hardcopy der Listviewansicht.

 
Das wäre mein Code dazu:
Code:
Sub UserForm_Initialize()
    Dim wks As Worksheet
    Dim col As New Collection
    Dim i As Integer

    Dim frm As win_ListView
    Set frm = win_ListView

    ' Listview-Fenster positionieren
    With frm
        .StartUpPosition = 0                     'Position manuell setzen
        .Left = Application.Left + 100           ' Beispiel: 100 Pixel von links
        .Top = Application.Top + 200             ' Beispiel: 50 Pixel von oben
    End With

    ' Fensterbreite steuern
    win_ListView.Width = 250


    Me.Caption = "Auflistung aller Monate"
    Me.ListView1.ListItems.Clear                 ' Löschen vorhandener Elemente im Listview-Steuerelement

    ' ListView-Steuerelement initialisieren (z.B. auf einem UserForm)
    ' Ersetze "ListView1" mit dem Namen deines ListView-Steuerelements
    With Me.ListView1
        .FullRowSelect = True                    ' Ganze Zeile markieren
        .Gridlines = True                        ' Gitternetzlinien
        .HideSelection = False                   ' getroffenen Auswahl anzeigen
        .MultiSelect = True
        .View = 3
        .LabelEdit = 1


        ' Spaltenüberschriften hinzufügen
        .ColumnHeaders.Add , , "Monat", 50, 0    ' erste Spalte muss linksbündig sein
        .ColumnHeaders.Add , , "Arbeits Std.", 50, 1    ' rechts
        .ColumnHeaders.Add , , "Std. Lohn", 50, 1    ' rechts, 2 = mittig
        .ColumnHeaders.Add , , "Salär", 50, 1    ' rechts
        .Width = 200 + 18


        ' Alle Arbeitsblätter durchlaufen
        For Each wks In ThisWorkbook.Worksheets

            If wks.Name <> "Feiertage" And wks.Name <> "Master" Then

                If wks.Name <> "" Or _
                   wks.Range("G41") <> "" Or _
                   wks.Range("O1") & _
                   wks.Range("O6") <> "" Then

                    On Error Resume Next
                    col.Add wks.Name, wks.Name & _
                            wks.Range("G41") & _
                            wks.Range("O1") & _
                            wks.Range("O6")
                    On Error GoTo 0
                End If
            End If

        Next wks

        ' In ListView eintragen
        For i = 1 To col.Count
            Set wks = ThisWorkbook.Worksheets(col(i))
            .ListItems.Add , , wks.Name
            .ListItems(.ListItems.Count).SubItems(1) = wks.Range("G41")
            .ListItems(.ListItems.Count).SubItems(2) = wks.Range("O1")
            .ListItems(.ListItems.Count).SubItems(3) = wks.Range("O6")


        Next i
    End With
    Set wks = Nothing

End Sub

Wäre super wenn mir geholfen werden könnte.

Und vieleicht gibt es Wissen dazu wie man in ListView die Spalten mit Zahlenwerten  addiert und in der nächsten oder übernächsten Zeile als Summe einfügt.


Angehängte Dateien Thumbnail(s)
   
"Philosophen sind Menschen, die wissen, dass sie nichts wissen, aber dennoch denken, dass sie klüger sind als der Rest."  Undecided
Zitat von Voltaire

Gruß jagga007
Antworten Top
#2
ohne beispieldatei: schwierig.

wenn du die Werte mit .Text aus der Exceltabelle liest, bekommst sie so, wie sie mit ihrem Zahlenformat in der Zelle angezeigt werden.

.ListItems(.ListItems.Count).SubItems(1) = wks.Range("G41").Text

wenn du die Summme haben willst, kannst du doch gleich in der Schleife beim Einlesen die Summe in einer Variablen bilden.

Gruß Daniel
Antworten Top
#3
Hier die Beispieldatei.

In der Menüleiste ist Dis... da kannst du leicht die ListView aufrufen.


Angehängte Dateien
.txt   Formeln.txt (Größe: 1,43 KB / Downloads: 5)
"Philosophen sind Menschen, die wissen, dass sie nichts wissen, aber dennoch denken, dass sie klüger sind als der Rest."  Undecided
Zitat von Voltaire

Gruß jagga007
Antworten Top
#4
auch ohne die Datei hatte ich ja schon Ideen für deine Problemstellungen beschrieben.
du könntest da schon mal darauf eingehen.

die alternative zu .TEXT wäre die FORMAT-Funktion.
damit kannst du dann die Werte einheitlich Formatiert in die Übersicht schreiben.

.ListItems(.ListItems.Count).SubItems(3) = Format(wks.Range("O6").Value, "#0.00 €")

Gruß Daniel
Antworten Top
#5
Mist, Value hatte ich nicht  auf dem Schirm.  mit Format habe ich sch rumgespielt aber brachte keinen Erfolg.


Mit den ListViewmöglichkeiten muß ich noch ein bisschen rumspielen.

Super und Danke für den Tipp.
"Philosophen sind Menschen, die wissen, dass sie nichts wissen, aber dennoch denken, dass sie klüger sind als der Rest."  Undecided
Zitat von Voltaire

Gruß jagga007
Antworten Top
#6
Schau mal:  https://snb-vba.eu/VBA_Listview_en.html
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • jagga007
Antworten Top
#7
Hallo ich würde nochmal Eure Unterstützung benötigen.

Das Gesammtsummen bereiten mir noch Probleme.  Zudem trägt er mir die Summen in die letzte Zeile Dez. Nachvollziehbar da er keine Zeile weiterspringen wird.
Ist es machbar ein oder zwei Leerzeilen einzufügem?

Bei dem Format der Summen bekomme ich auch nicht hin.

wäre schön wenn Ihr mir da weiterhelfen könntet.


Angehängte Dateien
.xlsm   test1.xlsm (Größe: 192,78 KB / Downloads: 7)
"Philosophen sind Menschen, die wissen, dass sie nichts wissen, aber dennoch denken, dass sie klüger sind als der Rest."  Undecided
Zitat von Voltaire

Gruß jagga007
Antworten Top
#8
Hallo

Ich weiß nicht was ihr alle mit solcher unsinnigen Aufteilung nach Monaten habt.
Wenn du es richtig machen möchtest: Nutze:
a) Intelligente Tabellen
b) Teile die Tabellen anstatt in Monaten in Mitarbeiter auf
c) Nutze Datenschnitte zum Filtern und somit auch Teilergebnisse in der Formel
Außerdem man fügt keine Formelzelle unterhalb der Tabelle, es sei denn man nutzt aus dem Tabellenentwurf die Ergebniszeile.
Viele Grüße
PIVPQ
Antworten Top
#9
Hallo,

den Summenteil so:
Code:
        ' Summen in übernächsten Zeile
        .ListItems.Add
        .ListItems.Add , , "Summen"
        .ListItems(.ListItems.Count).SubItems(1) = Format(sumArbStd, "#0.00 Std.")
        .ListItems(.ListItems.Count).SubItems(3) = Format(sumLohn, "#0.00 €")

die Summenvariablen sind falsch deklariert. Daraus ergibt sich dann eine Rechenfehler.
Diese beiden so:
Code:
Dim sumArbStd#                     ' Summe Arbeitstunden
    Dim sumLohn#                       ' Summe Lohn

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:
  • jagga007
Antworten Top
#10
Vielen Dank Uwe.

Auch der Einwand von PIVPQ ist nachvollziehbar. Doch habt ein wenig Nachsicht mit mir. Bin Rentner, und bastle nur für mich in Excel rum und stelle nur mich vor immer neuen Herausforderungen. 

Und das gibt ja so viele möglichkeiten in Excel.

Also nochmals vielen Dank für die Unterstützung.
"Philosophen sind Menschen, die wissen, dass sie nichts wissen, aber dennoch denken, dass sie klüger sind als der Rest."  Undecided
Zitat von Voltaire

Gruß jagga007
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste