2D-Array über For-Schleifen befüllen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Ignus.

    2D-Array über For-Schleifen befüllen

    Hallo,

    ich habe ein Problem mit dem Befüllen eines 2 Dimensionalen Arrays. Ich möchte verschiedene Daten aus einer Exceltabelle in ein Array einlesen.
    So funktioniert es:

    Quellcode

    1. For i = 4 To 500
    2. If Not (xlBlatt_1.Range("A" & i).Value Is Nothing) Then
    3. Form1.Daten(i - 4, 0) = CStr(xlBlatt_1.Range("A" & i).Value)
    4. Form1.Daten(i - 4, 1) = CStr(xlBlatt_1.Range("B" & i).Value)
    5. Form1.Daten(i - 4, 2) = CStr(xlBlatt_1.Range("C" & i).Value)
    6. Form1.Daten(i - 4, 3) = CStr(xlBlatt_1.Range("D" & i).Value)
    7. Form1.Daten(i - 4, 4) = CStr(xlBlatt_1.Range("E" & i).Value)
    8. Form1.Daten(i - 4, 5) = CStr(xlBlatt_1.Range("F" & i).Value)
    9. Form1.Daten(i - 4, 6) = CStr(xlBlatt_1.Range("G" & i).Value)
    10. Form1.Daten(i - 4, 7) = CStr(xlBlatt_1.Range("H" & i).Value)
    11. Form1.Daten(i - 4, 8) = CStr(xlBlatt_1.Range("I" & i).Value)
    12. Form1.Daten(i - 4, 9) = CStr(xlBlatt_1.Range("J" & i).Value)
    13. Form1.Daten(i - 4, 10) = CStr(xlBlatt_1.Range("K" & i).Value)
    14. Form1.Daten(i - 4, 11) = CStr(xlBlatt_1.Range("L" & i).Value)
    15. Form1.Daten(i - 4, 12) = CStr(xlBlatt_1.Range("M" & i).Value)
    16. Form1.Daten(i - 4, 13) = CStr(xlBlatt_1.Range("N" & i).Value)
    17. Form1.Daten(i - 4, 14) = CStr(xlBlatt_1.Range("O" & i).Value)
    18. Form1.Daten(i - 4, 15) = CStr(xlBlatt_1.Range("P" & i).Value)
    19. Form1.Daten(i - 4, 16) = CStr(xlBlatt_1.Range("Q" & i).Value)
    20. Form1.Daten(i - 4, 17) = CStr(xlBlatt_1.Range("R" & i).Value)
    21. Form1.Daten(i - 4, 18) = CStr(xlBlatt_1.Range("S" & i).Value)
    22. Form1.Daten(i - 4, 19) = CStr(xlBlatt_1.Range("T" & i).Value)
    23. Form1.Daten(i - 4, 20) = CStr(xlBlatt_1.Range("U" & i).Value)
    24. Form1.Daten(i - 4, 21) = CStr(xlBlatt_1.Range("V" & i).Value)
    25. Form1.Daten(i - 4, 22) = CStr(xlBlatt_1.Range("W" & i).Value)
    26. Form1.Daten(i - 4, 23) = CStr(xlBlatt_1.Range("X" & i).Value)
    27. Form1.Daten(i - 4, 24) = CStr(xlBlatt_1.Range("X" & i).Value)
    28. Form1.Daten(i - 4, 25) = CStr(xlBlatt_1.Range("Z" & i).Value)
    29. Else
    30. Exit For
    31. End If
    32. Next


    So nicht:

    Quellcode

    1. For i = 4 To 500
    2. If Not (xlBlatt_1.Range("A" & i).Value Is Nothing) Then
    3. For t = 0 To 26
    4. Test(i - 4, t) = CStr(xlBlatt_1.Range(Chr(65 + t)).Value)
    5. Next
    6. Else
    7. Exit For
    8. End If
    9. Next


    Hab ich irgendwo einen Denkfehler?

    Danke schon mal für die Hilfe

    MFG

    Ignus
    Willkommen im Forum. :thumbup:

    Ignus schrieb:

    Denkfehler
    Im oberen Code hängst Du noch ein i an den Buchstaben dran: "W" & i, das musst Du unten auch tun: Chr(65 + t) & i.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das Array ist doch am Stück.
    Kannst du direkt einlesen
    Form1.Daten = xlBlatt_1.Range("A4:Z500").Value

    Wenn du bei der Schleife bleiben willst:
    Du kannst die Zellen auch rein numerisch adressieren.

    Visual Basic-Quellcode

    1. For t = 1 To 26
    2. Test(i - 4, t) = CStr(xlBlatt_1.Cells(i,t).Value)
    3. Next

    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „petaod“ ()

    Stimmt. Das war EIN Fehler. Hat danach immer noch nicht funktioniert. Der Grund: Chr(65 + 26) = "[". Mag Excel in diesem Zusammenhang nicht und schmiert ohne Fehlermeldung ab.
    Mit:

    For t = 0 To 25
    Test(i - 4, t) = CStr(xlBlatt_1.Range(Chr(65 + t) & i).Value)
    Next

    zähl ich dann nur noch bis Z.

    @Peataod
    Danke, war mir so nicht bewusst. Probier ich gleichmal.


    Danke für die schnelle Hilfe

    MFG

    Ignus