Verständnisfrage bei Visual Basic

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Mosa, 25. Juli 2006 .

  1. 25. Juli 2006
    Hi!

    Hab ne Projektarbeit die ich anfertigen muß inder es um Visual Basic geht......kenn mich auch nicht wirklich mit dem Programm aus....
    Hier mal ein Auszug aus meinem Modul:::::::::::::::::::::::::::::::

    Next


    'Tabelle erstellen für den Abstand "x", die Querkraft und das Moment


    ZNr = Worksheets("Diagrammwerte").Range("C18").Row
    SpNr = Worksheets("Diagrammwerte").Range("C18").Column


    'Unterteilung der Stablänge in 20 Teile

    n = l / 20

    'Berechnen der Querkraft und des Momentes für die Länge l

    'Nur Gleichlast:

    For i% = 0 To 20
    x = lk + (i * n)
    K = K + 1



    Qx = -gk * x + A1
    Mx = -gk * x ^ 2 / 2 + A1 * (x - lk)


    Feld(K, 1) = x
    Feld(K, 2) = Qx
    Feld(K, 3) = Mx



    Worksheets("Diagrammwerte").Cells(ZNr + i% + 0, SpNr).Value = Feld(K, 1)
    Worksheets("Diagrammwerte").Cells(ZNr + i% + 0, SpNr + 1).Value = Feld(K, 2)
    Worksheets("Diagrammwerte").Cells(ZNr + i% + 0, SpNr + 2).Value = Feld(K, 3)




    Feld(K, 1) = x <------------------ hierfür kommt immer immer folgendes Dialogfeld: "Laufzeitfehler "9", Index außerhalb des gültigen Bereiches" was meint das Programm damit???? Hab meine Formeln etc. geprüft und hab keine Ahnung was das heißen soll.......vielleicht weiß es ja einer von euch.......
     
  2. 25. Juli 2006
    Der fehler kommt beispielsweise wenn du auf ein feld in einem array zugreifst welches nicht definiert bzw diminsioniert ist. Also "Feld(K,1)" ist keine gültige position. Das array (bzw die matrix - also das feld) muss vorher diminsioniert werden.

    Würde es erst global deklarieren:
    Dim Feld() as double (such dir nen ordentlichen typ aus)

    und später in deiner funktion:
    ReDim Feld(0 to 10, 0 to 3) zum beispiel - jenachdem wie groß das feld sein soll
    der befehl killt allerdings alle bestehenden elemente, falls du die größe ändern
    willst ohne die einträge zu verlieren musst du mit
    ReDim Preserve Feld(0 to x, 0 to y) arbeiten.
     
  3. 25. Juli 2006
    So,sorry aber ich ich hab dich grade nicht verstanden........meinst du ich hätte vorher z.B K dimensionieren sollen??

    Also z.B so:

    Dim K As Integer
    Dim Feld(1 To 35, 1 To 9)

    Das soll eine Tabelle werden, die aus 30 zeilen besteht...........10zeilen wurden korrekt erstellt
    und jetzt bei zeile 11 und 12 dreht er durch obwohl ich das gleiche was ich hier geschrieben habe oben auch geschrieben habe halt ohne DimK As.........


    Hoffe du verstehst mein Problem und wenns geht bitte on Normalsprache,weil ich ehrlich nur das nötigste beherrsche

    Danke im vorraus
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.