Hallo noch einmal,
ich habe eine Ergänzung, die das ganze einschränkt:
Delphi-Quellcode:
Private Sub setCellDimension(iSheet As Integer, countRows As Integer, countColumns As Integer, ByRef myWorkbook As TWorkbook)
Dim colFilterLength As Integer
Dim rowFilterLength As Integer
Dim filter As String
Dim rows As Integer
Dim cols As Integer
colFilterLength = thisConfig.getFilterlenght(thisConfig.COL__F)
rowFilterLength = thisConfig.getFilterlenght(thisConfig.ROW__F)
filter = thisConfig.getFilter(thisConfig.COL__F, 0)
If (filter <> CStr(thisConfig.ALL__F)) Then
cols = colFilterLength
Else
cols = countColumns
End If
filter = thisConfig.getFilter(thisConfig.ROW__F, 0)
If (filter <> CStr(thisConfig.ALL__F)) Then
rows = rowFilterLength
Else
rows = countRows
End If
// Hier wird die Größe des Arrays meines benutzerdefinierten Typs geändert
ReDim myWorkbook.sheets(iSheet).cells(rows, cols)
// Hier kann ich mir die Änderung ausgeben lassen, alles ok so weit
// iSheet = 1
rows = UBound(myWorkbook.sheets(iSheet).cells, 1)
cols = UBound(myWorkbook.sheets(iSheet).cells, 2)
Ich benutze die Prozedur wie folgt:
Delphi-Quellcode:
...
setCellDimension i, countRows, countColumns, myWorkbook
testr = UBound(myWorkbook.sheets(1).cells, 1)
testc = UBound(myWorkbook.sheets(1).cells, 2)
...
In der Prozedur selbst werden die Arraydimensionen geändert. Prüfe ich nach dem Aufruf die Dimensionen, sind diese unverändert... Was mache ich falsch? Die Übergabe des Parameters ist ByRef...
Ich kapiere das nicht. Kann jemand helfen?