Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1028to1032
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
Inhaltsverzeichnis

ReDim Problem mit UBound in zweidim. Array

ReDim Problem mit UBound in zweidim. Array
27.11.2008 21:50:41
Andreas
Hallo Herber Fans,
durch die Unterstützung hier im Forum habe ich einiges über die Re- Dimensionierung von Arrays gelernt und damit noch experimentiert. Nun wollte ich ein zweidimensionales Array über ReDim Preserve und UBound(myArr) + 1 in seiner Spaltenanzahl neu dimensionieren. Aber ich bekomme es einfach nicht hin. Der Debugger gibt immer aus, daß der Index außerhalb des gültigen Bereiches liegt. Ich finde den Fehler nicht. Ich weiß nicht, ob es daran liegt, aber ich habe es auch nicht hinbekommen, daß im UBound Befehl die Aussengrenze der Spalten genommen wird. Die Zeilen sind 1 to 2 dimensioniert. Für die ReDim Betrachtung soll aber die Anzahl der Spalten die Referenz sein. Wie kann ich UBound selektiv nur für Spalten ermitteln? Und warum läuft dieser Code nicht. Wo ist der Logik Fehler?
https://www.herber.de/bbs/user/57188.xls
Ich würde mich über weitere Anhaltspunkte aus dem Forum sehr freuen.
Vielen Dank und Grüße, Andreas Hanisch

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ReDim Problem mit UBound in zweidim. Array
27.11.2008 22:32:50
Tino
Hallo,
Spalte
Ubound(area,2)
Zeile
Ubound(area,1)
Gruß Tino
AW: ReDim Problem mit UBound in zweidim. Array
27.11.2008 22:41:00
Andreas
Hallo Tino,
danke für die Syntax.
Aber ich bekomme die Re Dimensionierung im Code immer noch nicht korrekt hin. Es müßte eigentlich laufen. Kannst Du den Fehler erkennen?
Dank und Gruß, Andreas

Sub SubTotalsAuslesen_Array_2()
Dim pvTable As PivotTable
Dim iCounter As Long
Dim SubTotalElement As Variant
Dim SubTotalArr()
Set pvTable = ActiveSheet.PivotTables(1)
ReDim SubTotalArr(1 To 2, 0 To 0)                 'muß ich ein Array Initial dimensionieren?
For Each pvField In pvTable.RowFields
iCounter = 0
For Each SubTotalElement In pvField.Subtotals
iCounter = iCounter + 1
If SubTotalElement = True Then
ReDim Preserve SubTotalArr(1 To 2, 1 To (UBound(SubTotalArr, 2) + 1))    'hier  _
kommt der Debugger
SubTotalArr(1, UBound(SubTotalArr)) = pvField.Caption
End If
Next
Next
Debug.Print "final ubound:"; UBound(SubTotalArr, 2)
For i = 1 To UBound(SubTotalArr, 2)   'auch hier soll nur auf die Ubound Spalte des Arrays  _
referenziert werden, wenn nur einmal SubTotals ausgelesen wurden.
Debug.Print i; "Field:"; SubTotalArr(1, i), "SubT:"; SubTotalArr(2, i)
Next i
End Sub


Anzeige
AW: ReDim Problem mit UBound in zweidim. Array
27.11.2008 22:53:06
Daniel
HI
es kann mit "ReDim Preserve" nur die obere Grenze verändern, nicht aber die untere.
die muss schon bei der erstdimensionierung passen.
Gruß, Daniel
AW: ReDim Problem mit UBound in zweidim. Array
27.11.2008 23:00:28
Tino
Hallo,
versuche es mal ohne
1 To
PS: schreibe vom Pocket
Gruß Tino
AW: ReDim Problem mit UBound in zweidim. Array
27.11.2008 22:36:51
Daniel
Hi
erster Fehler, du arbeitset nicht mit Option Explict.
das alleine ist eigentlich schon ein Grund, sich das Marko gar nicht erst anzuschauen.
nichtdestotrotz, folgende Zinken sind drin:
1. du versuchst mit UBound die grösse des Arrays abzufragen, dabei sind für das Array noch gar keine Dimensionen festgelegt (die erste ReDim - Anweisung ist auskommentiert), das kann also nicht funktionieren.
2. wenn du mit "1 to x" redimensioneren willst, muss auch die erstdimensonierung mit "1 to y" erfolgen.
3. kannst du mit ReDim-Preserve immer nur die 2. Dimension erweitern (Spalten), nich aber die erste, dh. die muss schon bei der erstdimensonierung passend angelegt werden.
4. mit Ubound(arr) fragst du immer die akutelle Zeilenzah (1, Dimension)l des Arrays ab. um die aktuelle Spaltenzahl (2. Dimension) zu ermitteln, musst du Ubound(arr, 2) verwenden
Gruß, Daniel
Anzeige
AW: ReDim Problem mit UBound in zweidim. Array
27.11.2008 22:57:00
Andreas
Hallo Daniel,
vielen Dank. Jetzt hat es geklingelt... Entschuldige bitte die Nicht Verwendung von Option Explicit. Das ist in dem Beispiel passiert, ansonsten weiß ich diese Option schon zu schätzen. Das mit der ersten auskommentieren ReDim Anweisung geht klar. Die muß drin sein.
Das die Erst- und Rediomensionierung übereinstimmen müssen, war mein Fehler. Nun läuft es.
Eine kleine Frage noch:
Die Erstdimensionierung erfolgt mit ReDim myArr(1 to 2, 1 to 1). In der anschließend folgenden Redimensionierung schreibe ich bisher ReDim Preserve myArr(1 to 2, 1 to n). Also nur die Spalten werden neu dimensioniert, geht ja auch nicht anders. Muß ich die Zeilendimension (1 to 2) auch in der Redimensionierung immer wieder hinschreiben oder kann ich das überspringen/ weglassen. a la: ReDim Preserve myArr(, 1 to n). Einfaches weglassen führte zum Debugger. Gibt es eine spezielle Syntax, falls es geht?
Rein interesse- und verständnishalber.
Dir vielen Dank für den entscheidenden Hinweis. Habe noch einen schönen Abend!
Grüße, Andreas
Anzeige
AW: ReDim Problem mit UBound in zweidim. Array
28.11.2008 09:08:00
Andreas
Hallo Daniel,
vielen Dank. Jetzt hat es geklingelt... Entschuldige bitte die Nicht Verwendung von Option Explicit. Das ist in dem Beispiel passiert, ansonsten weiß ich diese Option schon zu schätzen. Das mit der ersten auskommentieren ReDim Anweisung geht klar. Die muß drin sein.
Das die Erst- und Rediomensionierung übereinstimmen müssen, war mein Fehler. Nun läuft es.
Eine kleine Frage noch:
Die Erstdimensionierung erfolgt mit ReDim myArr(1 to 2, 1 to 1). In der anschließend folgenden Redimensionierung schreibe ich bisher ReDim Preserve myArr(1 to 2, 1 to n). Also nur die Spalten werden neu dimensioniert, geht ja auch nicht anders. Muß ich die Zeilendimension (1 to 2) auch in der Redimensionierung immer wieder hinschreiben oder kann ich das überspringen/ weglassen. a la: ReDim Preserve myArr(, 1 to n). Einfaches weglassen führte zum Debugger. Gibt es eine spezielle Syntax, falls es geht?
Rein interesse- und verständnishalber.
Dir vielen Dank für den entscheidenden Hinweis. Habe noch einen schönen Abend!
Grüße, Andreas
Anzeige
AW: ReDim Problem mit UBound in zweidim. Array
28.11.2008 12:01:00
Tino
Hallo,
hier mal ein bar Beispiele wie es funktioniert.
Die erste Zeile bzw. Spalte hat hier immer den Indes 0, daher 0 heißt eigentlich 1 Zeile oder Spalte.
Sub test1()
Dim meArea()

'Area Dimensionieren, sechs Zeilen u. eine Spalte 
'Area 1. Zeile bzw Spalte hat den Index ist 0 ;-) 
Redim meArea(5, 0)
Debug.Print Ubound(meArea, 1), Ubound(meArea, 2)

'Area neu Dimensionieren mit sechs Spalten 
Redim Preserve meArea(5, 5)
Debug.Print Ubound(meArea, 1), Ubound(meArea, 2)

'oder 
Redim Preserve meArea(Ubound(meArea, 1), 5)
Debug.Print Ubound(meArea, 1), Ubound(meArea, 2)

'oder 
Redim Preserve meArea(5, Ubound(meArea, 2) + 5)
Debug.Print Ubound(meArea, 1), Ubound(meArea, 2)
End Sub


Gruß Tino

Anzeige
AW: ReDim Problem mit UBound in zweidim. Array
01.12.2008 10:13:00
Andreas
Hi Tino,
vielen Dank. Werde mir die Beispiele merken und mit dem Wissen nun vermutlich mehr die Möglichkeiten von Arrays ausschöpfen können.
Grüße, Andreas
AW: ReDim Problem mit UBound in zweidim. Array
28.11.2008 12:08:00
Rudi
Hallo,
das geht nicht. Die Mühe musst du dir schon machen.
Gruß
Rudi
AW: ReDim Problem mit UBound in zweidim. Array
01.12.2008 10:09:00
Andreas
Hi Rudi,
vielen Dank für die Antwort. Nach Abschluß dieses Threads und Themas bin ich in Sachen Array viel fitter als zuvor!
Grüße, Andreas

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige