Excel: ZellenInhalt + dazugehörige Zeilennummer merken/speichern (kein VBA code)

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Akki.

    Excel: ZellenInhalt + dazugehörige Zeilennummer merken/speichern (kein VBA code)

    Hallo VB FREUNDE,

    Ich möchte aus einer Excel Tabelle eine bestimmten Zelleninhalt und die dazugehörige Zeilennummer speichern, z.B. in einem ArrayList.
    In dem gewählten Bereich sind Zahlen, diese Zahlen sortiere ich auch mit der (sort funktion).

    Das Auslesen des Inhalts aus der Excel-DAtei und das speichern in einem Arraylist klappt wunderbar. Nur benötige ich auch die dazugehörige Zeilennummer.

    Um ein besseres Bild zur meiner Fragestellung zu erhalten, habe ich meine Exceldatei und ein Pic angehängt. Siehe Anhang.

    (Selbstverständlich habe ich auch alleine rumprobiert, allerdings ohne Erfolg)

    Das ist mein Code zum Auslesen und Speichern in meinem ArrayList: Vielen DANK im Voraus!!!!

    VB.NET-Quellcode

    1. Imports iExcel = Microsoft.Office.Interop.Exce
    2. Public Class Form1
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Dim xlApp As New iExcel.Application ' Erstelle ein neues Excel Objekt
    5. '--------------Beginn: Variablendeklaration: Um mit Excel zu arbeiten----------------
    6. Dim xlWorkbookUrsprung As iExcel.Workbook
    7. Dim xlWorksheetUrsprung As iExcel.Worksheet
    8. Dim xlZelle As iExcel.Range
    9. '--------------Beginn: Variablendeklaration für Zeilenanzahl zu finden ----------------
    10. Dim intZeilen, iZeile As Integer
    11. Dim nZeile, xZeile As Boolean
    12. iZeile = 0
    13. intZeilen = 0
    14. nZeile = False
    15. xZeile = False
    16. Dim letzteZeile As Integer
    17. '--------------Ende: Variablendeklaration für Zeilenanzahl zu finden----------------
    18. xlWorkbookUrsprung = xlApp.Workbooks.Open("C:\ExcelInhalt.xls") ' Oeffne die angegebene Datei
    19. xlWorkbookUrsprung.Sheets(1).Activate()
    20. xlWorksheetUrsprung = CType(xlWorkbookUrsprung.Worksheets(1), iExcel.Worksheet)
    21. '--------------Beginn: Funktion Anzahl der belegten Daten in Spalte C1 festzustellen----------------
    22. xlZelle = xlWorksheetUrsprung.Range("C1")
    23. While nZeile = False
    24. If xlZelle.Offset(intZeilen, 0).Value = "" Then
    25. nZeile = True
    26. letzteZeile = intZeilen
    27. Else
    28. intZeilen += 1
    29. End If
    30. End While
    31. '--------------Ende: Funktion Anzahl der belegten Daten in Spalte C1 festzustellen----------------
    32. Dim pufferListe As New ArrayList 'Mein Array zum Befüllen des Zelleninhalts
    33. ListBox1.Items.Clear()
    34. ListBox2.Items.Clear()
    35. pufferListe.Clear()
    36. Dim k, l As Integer
    37. For k = 1 To letzteZeile
    38. pufferListe.Insert(l, xlWorksheetUrsprung.Cells(k, 3).Value)'Fuelle mein Arraylist mit Hilfe einer Schleife
    39. Next k
    40. 'Ausgabe zur Testzwecke, um zu sehen um im Arraylist auch tatsächlich der Inhalt kopiert wurde
    41. Dim b As String
    42. Dim x As Integer
    43. b = "Spalte C vorher: "
    44. For x = 0 To pufferListe.Count - 1
    45. b &= pufferListe(x) & " "
    46. Next
    47. ListBox1.Items.Add(b)
    48. pufferListe.Sort() ' Hier Sortiere ich die Zahlen und gebe sie anschließend nur aus zur Testzwecken
    49. Dim a As String
    50. Dim u As Integer
    51. a = "Spalte C nach Sortierung: "
    52. For u = 0 To pufferListe.Count - 1
    53. a &= pufferListe(u) & " "
    54. Next
    55. ListBox2.Items.Add(a)
    56. End Sub
    57. End Class
    Bilder
    • ExcelInhaltPIC.jpg

      176,13 kB, 1.111×542, 179 mal angesehen
    Dateien
    • ExcelInhalt.xls

      (17,41 kB, 159 mal heruntergeladen, zuletzt: )

    Akki schrieb:

    Nur benötige ich auch die dazugehörige Zeilennummer.

    Du benötigst also von jeder Excel-Zelle 2 Werte: Zeilennummer und Wert.

    in eine Arraylist kann man aber nur eines tun: Zeilennummer oder Wert. Oder noch was anneres.

    also programmiere dir zuerst eine DatenObjekt-Klasse, mit den Properties Zeilennummer und Wert.

    Davon kannst du dann in die Arraylist tun - problem solved.

    übrigens: Arraylist ist Crap.
    Nimm List(of DatenObjekt)
    ErfinderDesRades, Kannst du mir vllt Beispiel geben, wie ich es impelementieren soll.
    Ich habe jetzt es so gemacht, aber habe keine ahnung ob es das war was du meintest ?(

    VB.NET-Quellcode

    1. Private Shared Function pufferListe(ByVal ZeilenNummer, ByVal ZeilenInhalt) As List(Of String)
    2. 'Dim pufferListe1 As New List(Of String)
    3. pufferListe.Clear()
    4. Dim k, l As Integer
    5. For k = 1 To 5
    6. pufferListe(ZeilenNummer, ZeilenInhalt).Insert(l, xlWorksheetUrsprung.Cells(k, 3).Value)
    7. Next k
    8. pufferListe(ZeilenNummer, ZeilenInhalt).Sort()
    9. Return (was soll ich zurück geben)
    10. End Function
    scheinbar weißt du nicht, was eine Klasse ist, und was eine Property.

    Hat imo keinen Zweck, dich mit Fertiglösungen zu bedienen, die du nicht verstehst.
    Auch kein Zweck, die fehlenden Grundlagen per Foren-Posts nun nachzuholen.

    Ich empfehle: dieses Buch Lesen und kein anneres.