AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VBA Parameterübergabe

Ein Thema von barnti · begonnen am 13. Apr 2007 · letzter Beitrag vom 13. Apr 2007
Antwort Antwort
barnti

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

VBA Parameterübergabe

  Alt 13. Apr 2007, 15:56
Hallo,

ich habe das Problem mich mit VBA-Makroprogrammierung auseinandersetzen zu müssen dazu Folgendes:

 FI.init filteredWorkbook Ich übergebe meinem Klassenmodul FI den Benutzerdefinierten Datentyp filteredWorkbook, der im aktuellen Klassenmodul ABLAUF folgender Maßen definiert ist:

Private filteredWorkbook As TWorkbook Bei der Übergabe ByRef meines filteredWorkbooks wird dieses mit Daten gefüllt und verändert:

Delphi-Quellcode:
Private myWorkbook As TWorkbook
...
Public Sub init(config As FileConfig, ByRef aWorkbook As TWorkbook)
Dim tmpWorkbook As TWorkbook
Dim row As Integer
Dim col As Integer
    
    tmpWorkbook = aWorkbook
        
    myWorkbook = tmpWorkbook
        
    // Hier wird die Variable verändert
    initSheets
    aWorkbook = myWorkbook
    
    row = UBound(myWorkbook.sheets(1).cells, 1)
    col = UBound(myWorkbook.sheets(1).cells, 2)
    
    row = UBound(aWorkbook.sheets(1).cells, 1)
    col = UBound(aWorkbook.sheets(1).cells, 2)
    
End Sub
InitSheets kopiert den Inhalt eines ExcellWorkbooks in die benutzerdefinierten Variable MyWorkbook. In Init Sheets verändere ich myWorkbook:

Delphi-Quellcode:
    ReDim Preserve myWorkbook.sheets(iSheet).rowHeader(rows)
    ReDim Preserve myWorkbook.sheets(iSheet).ColumnHeader(cols)
    
    ReDim Preserve myWorkbook.sheets(iSheet).cells(rows, cols)
MyWorkbook wird in der Anzahl der Reihen und Spalten angepasst. Wenn ich aber nach dem Aufruf von InitSheets row und col kontrolliere sind beide unverändert auf dem vorherigen Wert...

Kann jemand helfen? Ich weiß nicht mehr weiter...
Gruß,

Barnti
  Mit Zitat antworten Zitat
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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz