excel 2010 Listview

jagga007

Grünschnabel
Hi Leute,

hab ein Problem mit Listview.
Was will ich:
Aus aktuell geöffneter Excel Datei soll eine andere Excel-Datei eingelesen werden. Bestimmte Zellen aller vorhandenen Tabellen in sollen Listview gelistet werden.
Danach in der Userform durch click auf übernehmen in aktuell geöffnete Datei an die letzte gefüllte Zelle in A+1 springen und das eingelesen in Listview hier anfügen.

In meinem Beispiel hab ich das einlesen geschafft bis auf das die Zellen nicht in der richtigen Spalte des Listview angezeigt werden.

Vieleicht kann mir jemand hier etwas behilflich wäre euch sehr dankbar?



Gruß
jagga007
 

Anhänge

  • Tabellenblätter anderer Datei in Listview einlesen.rar
    780,2 KB · Aufrufe: 40
Dein "Fehler ist hier:

Visual Basic:
Set wks = WBo.Worksheets(col(i))
            .ListItems.Add
            .ListItems(.ListItems.Count).SubItems(1) = wks.Range("J1")
            .ListItems(.ListItems.Count).SubItems(2) = wks.Range("B10")
            .ListItems(.ListItems.Count).SubItems(3) = wks.Range("D3")
            .ListItems(.ListItems.Count).SubItems(4) = wks.Range("D4")

Korrekt:
Visual Basic:
Set wks = WBo.Worksheets(col(i))
            .ListItems.Add
            .ListItems(.ListItems.Count).Text = wks.Range("J1")
            .ListItems(.ListItems.Count).SubItems(1) = wks.Range("B10")
            .ListItems(.ListItems.Count).SubItems(2) = wks.Range("D3")
            .ListItems(.ListItems.Count).SubItems(3) = wks.Range("D4")
 
Hallo Zvoni,

danke zunächst einmal für Deine Hilfe. Bitte sag mir wieso du zu Beginn ".Text" verwendest und bei .SubItem(2) nicht. Ist doch auch Text?

Und kennst du eine möglich, wie man die einzelnen Zellen in Listview editieren kann bevor man die Daten wegschreibt?

Gruß
jagga007
 
Zuletzt bearbeitet:
Die erste Spalte in einem Listview ist das ListItem selbst, ergo einfach die Text-Eigenschaft.
Alle folgenden Spalten (also ab Spalte 2) sind SubItems beginnend mit 1.
Die haben kein text, weil die SubItems selbst schon als String definiert sind.

In einem Listview kannst du nur die Felder in der ersten Spalte editieren. Willst du die anderen Felder editieren, musst du entweder per separate Textfelder arbeiten, oder ein anderes Grid-Control verwenden
 
Das hab ich nun selbst auch gelesen. Vieleicht kannst du mir ja sagen, was hier am sinnvollsten wäre?

Und wie ich das bewerkstelligen könnte.

Danke für Deine Hilfe. Ohne diese wäre ich aufgeschmissen.


Gruß
jagga007
 
Ich mache solche Sachen immer wie folgt:
Rechts vom Listview (Form verbreitern) ordne ich mir Textfelder mit entsprechender Beschriftung an, sowie auch einen Button "Update" oder so ähnlich (Validierungs-Funktion einbauen!).
Bei Click auf ein Item im Listview (Click-Ereignis) werden die Textfelder per Listview.SelectedItem (oder wie das Ding heisst) gefüllt.
Danach editiere ich die Einträge in den Textfeldern und per Click auf "Update" klopf ich die korrigierten Einträge zurück ins Listview.
Das ist alles (und soweit ich weiss die einfachste Variante). Ich habe schon diverse Lösungen im Internet gefunden, wo die Leute mit dem MSFlexgrid so eine Art Excel nachprogrammiert haben, aber das ist mir für solche Sachen einfach zu viel Aufwand

EDIT: Hier ist mal ein kleines Beispiel wie sowas auch ohne zusätzlichen Update-Button funktionieren kann. (du musst das .txt löschen)
Mappe aufmachen, ALT+F11, die UserForm auswählen, mit F5 starten, einen Eintrag im Listview anclicken, und schau mal was im Listview passiert, wenn du im textfeld einen Eintrag veränderst.

EDIT2: hab was vergessen: Die Änderungen in den Textfeldern werden nur ins Listview übernommen, solange der User wirklich was eintippt. Copy&Paste (STRG+C/STRG+V) funktioniert hier nicht!! Dann brauchst du wirklich einen Update-Button.
 

Anhänge

  • Mappe1.xlsm.txt
    14,8 KB · Aufrufe: 78
Zuletzt bearbeitet:
Tolle Idee.

Wo findet man sowas denn. Ich such mir die Hacken ab und finde nichts dergleichen.

Werd ich wohl auch so machen toller Vorschlag.

Ich hab wie schon erwähnt und auch zu Beginn eine .rar der Inhalt zwei Dateien mit ins Netz gestellt. Die Stundenaufzeichnung13_Forum.xlsm wird geöffnet und links oben einen Button "Tagesberichte übernehmen". Auf diesen geklickt werden aus der TB-2013_Juni für Stundenaufzeichnung13_Forum.xlsm aus allen Tabellenblättern bestimmte Zellen eingelesen und in Listview dargestellt.

Nach dem eventuell korrigiert wurde sollen nun die Zeilen in Stundenaufzeichnung13_Forum.xlsm an die bereits bestehenden Zeilen angehängt werden.
Die TB-2013.... wird ja eh automatisch geschlossen.

Wie könnte ich denn das umsetzen? Oder wo sind vielleicht Beispiele im Netz?


Gruß
jagga007
 
So, hab dir mal quick&dirty mal schnell was zusammengebaut. Editieren funktioniert jetzt auch mit Copy&Paste
 

Anhänge

  • TB-2013_Juni für Stundenaufzeichnung13_Forum.zip
    844,1 KB · Aufrufe: 46
Hi,

ich möchte mich bis jetzt sehr bei die bedanken für die Hilfe alleine hätte noch eine ganze Weile gedauert bis ich dahinter gestiegen wäre.

Ich hoffe das ich die noch ein paar Fragen zu diesem Thema stellen darf

Aber irgendwie hab ich in manchen Zellen von ListView Zahlen mit 0,9999... oder 0,4999... oder 0,2500... obwohl in den Tabellenblättern entweder eiene 1,00 oder 0,5 oder 0,25 steht.

Hast du vielleicht eine erklärung dafür?


Gruß
jagga007
 

Neue Beiträge

Zurück