Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
664to668
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
664to668
664to668
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

"Index außerhalb ..."- Abfrage

"Index außerhalb ..."- Abfrage
09.09.2005 13:51:44
Philipp
Hallo Forum,
da hier gerade keine unbeantwortete Frage mehr im Forum steht und ihr euch bestimmt schon langweilt, dachte ich mir, ich könnte da mal schnell eingreifen :0).
Mein Problem ist folgendes:
Ich lege 2 Vektoren an, die ich auch gleich fülle. Diese Vektoren bilden die beiden Achsen einer Matrix, die ich ebenfalls fülle. Diese Matrix kann ich mir dann in Excel zeichnen lassen (habe da eine Visualisierungs-Methode geschrieben).
Jetzt möchte ich nachträglich einen der Vektoren erweitern, die Matrix neu zeichnen lassen und erst dann - in der Matrix - die neuen Werte für die neuen Matrixfelder eingeben.
Das Problem ist, dass ich beim Zeichnen der Matrix die Nachricht "Index außerhalb des gültigen Bereichs bekomme", weil die Routine versucht die neuen Werte (die es noch nicht gibt) in die Matrix zu zeichnen.
Ich suche also nach einer Lösung, die schaut, ob es das Matrix-Feld schon gibt und wenn nicht, einfach weitermacht und nicht mit einer Fehlermeldung abbricht.
Ich habe schon mit ...
Ff Fot vektor(i) ist Nothing Then
... usw rumgespielt, aber es will einfach nicht.
Hat jemand von euch Cracks eine tolle Idee?
Vielen Dank schonmal im Voraus.
Gruß,
Philipp

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "Index außerhalb ..."- Abfrage
09.09.2005 14:42:41
Nepumuk
Hallo Philipp,
du kannst doch mit UBound die Dimensionierung abfragen.
Gruß
Nepumuk
Excel & VBA – Beispiele
Ubound leider nicht möglich
09.09.2005 15:03:07
Philipp
Hallo Nepumuk,
das würde schon gehen, allerdings nur, wenn der Vektor schon initialisiert ist. Ich habe das Problem, dass es das Feld, dass die Visualisierung zeichnen möchte (noch) gar nicht gibt.
Vielleicht habe ich mich da nicht genau genug ausgedrückt, daher hier nochmal mit Beispiel:
Ich habe 2 Vektoren:
VektorA(i) mit i Elementen
VektorB(j) mit j Elementen
Genau genommen sind es Vektoren vom Typ Type, die verschiedene Attribute haben. z.B.:
VektorA(i).name
VektorA(i).kommentar
VektorA(i).Einheit
Diese spannen die MatrixAB(i,j) auf.
Sie ist ebenfalls vom Typ Type und hat z.B. die Attribute:
MatrixAB(i,j).Name
MatrixAB(i,j).Wert
...
Wenn ich nun VektorA(i) auf VektorA(i+1) ergänze und die neue MatrixAB(i+1,j) zeichnen möchte. Bekomme ich die Fehlermeldung, weil es z.B. MatrixAB(i+1,j).Wert noch nicht gibt.
Ich möchte daher also vorher abfragen, ob es die Attribute schon gibt oder nicht.
Ich habe das gerade provisorisch mit "On Error Resume Next" übergangen, bin aber nicht ganz zufrieden damit, weil damit natürlich alle auftretenden Fehler übergangen werden und der Quellcode noch in Bearbeitung/ im Wachstum ist. Daher wäre es schon sinnvol zu sehen, wo welche Fehler entstehen.
Ich hoffe, das Problem ist jetzt klarer geworden.
Trotzdem natürlich schonmal vielen Dank für deine Antwort.
Noch eine Idee? Irgend jemand?
Gruß,
Philipp
Anzeige
AW: Ubound leider nicht möglich
09.09.2005 15:26:25
Nepumuk
Hallo Philipp,
lass doch mal die Dimensionierung sehen und ein paar Zeilen Code, in dem das Array angelegt wird. Ich seh da nämlich kein Problem:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Type testtyp1
    sname As String
    iwert() As Integer
End Type

Private Type testtyp2
    udttest() As testtyp1
End Type

Public Sub test()
    Dim udttyp1(1 To 10) As testtyp1
    Dim udttyp2(1 To 10) As testtyp2
    Redim udttyp1(1).iwert(1 To 20)
    Redim udttyp2(1).udttest(1 To 10)
    Redim udttyp2(1).udttest(1).iwert(1 To 50)
    Debug.Print UBound(udttyp1)
    Debug.Print UBound(udttyp1(1).iwert)
    Debug.Print UBound(udttyp2(1).udttest(1).iwert)
End Sub

Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
AW: Ubound leider nicht möglich
09.09.2005 15:48:59
Philipp
Hallo Nepumuk,
also das mit dem Quellcode gestaltet sich etwas schwierig. Nicht, weil ich den Quellcode geheim halten möchte oder sowas, sondern, weil der mittlerweile so komplex geworden ist, dass es wohl mehr als ein paar Zeilen wären. Das Ganze erstreckt sich über mehrere Module und auch die Datenstruktur beinhaltet mehrere Hierarchieebenen.
Beispiel: VektorA(i).name ist in Wirklichkeit Datentyp.Vektor1(i).Vektor2(k).Wert und MatrixAB(i,j).Wert wäre DatenTyp.Matrix.Submatrix(i,j).SubSubmatrix(k,l).Wert)
Wenn es keine Möglichkeit gibt, zu testen, ob der Zugriff auf einen Vektor ein "Index außerhalb des gültigen Bereichs" verursachen würde, dann lass ich es jetzt erstmal mit dem "On Error Resume Next" drin. Ist zwar nicht wirklich befriedigend, aber da das Ganze etwas eilt, besser als nix. wenn ich mehr Zeit habe, kümmer ich mich dann nochmal darum.
Vielen Dank auf alle Fälle für deine regen Bemühungen und sorry, falls das jetzt etwas unbefriedigend endet (für mich leider auch :( ).
Gruß,
Philipp
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige