Einzelnen Beitrag anzeigen

barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: VBA Parameterübergabe

  Alt 13. Apr 2007, 16:52
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?
Gruß,

Barnti
  Mit Zitat antworten Zitat