Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
748to752
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
748to752
748to752
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Functions Array übergibt keine Werte

Functions Array übergibt keine Werte
25.03.2006 15:45:55
Peter
Servus,
hab mal ne Frage, bei der ich seit einer Stunde auf´m Schlauch stehe.
Hab unten stehende Funktion geschrieben um mir aus einer Datenbank (in dem Fall eine .xls, ich weiss soll man nicht machen, aber egal) Werte zu holen.
Das ganze schreib ich in ein Array, nur leider bekomme ich nur leere Datenfelder zurück (müsste aber mit Daten gefüllt sein) und mir fällt langsam nichts mehr ein.
Vieleich erbarmt sich jemand, Danke.


Private Function DBArray(Startdatum As Double, Enddatum As Double)
Dim myArr(0 To 1), strFehler As String
Dim intStartZeile As Integer, intEndZeile As Integer
Dim wbk As Workbook, wksArr(0 To 1) As Object
    If Startdatum = 0 Or Enddatum = 0 Then
        DBArray = "Kein Startdatum gewählt/Kein Enddatum gewählt"
        Exit Function
    End If
'    On Error GoTo Fehler
    'Überprüfen ob objDB gefüllt ist bzw. ob Datenbank.dll überhaupt geöffnet ist
    If objDB Is Nothing Then
        For Each wbk In Application.Workbooks
            If wbk.Name = "Datenbank.dll" Then _
                Set objDB = Workbooks("Datenbank.dll"): Exit For
        Next
        If objDB Is Nothing Then Set objDB = GetObject(ThisWorkbook.Path & "\Datenbank.dll")
    End If
    'Variablenzuweisung an WorksheetArray in welchen gesucht werden muss
    If Year(Startdatum) < Year(Enddatum) Then _
        Set wksArr(1) = objDB.Worksheets("DB_Ho" & Year(Enddatum))
        Set wksArr(0) = objDB.Worksheets("DB_Ho" & Year(Startdatum))
    'Suchen der Start- und Endzeile für die Rangeübergabe
    intStartZeile = Application.WorksheetFunction.Match _
                    (Startdatum, wksArr(0).Range("A2:A367"), 0)
    If wksArr(1) Is Nothing Then
        intEndZeile = Application.WorksheetFunction.Match _
                    (Enddatum, wksArr(0).Range("A2:A367"), 0)
    Else
        intEndZeile = Application.WorksheetFunction.Match _
                    (Enddatum, wksArr(1).Range("A2:A367"), 0)
    End If
    'Befüllen der Arrays mit den in der DB gefundenen Werten !
    If wksArr(1) Is Nothing Then
        myArr(0) = wksArr(0).Range("B" & intStartZeile & ":Z" & intEndZeile)
    Else
        myArr(0) = wksArr(0).Range("B" & intStartZeile & ":Z367")
        myArr(1) = wksArr(1).Range("B2:Z" & intEndZeile)
    End If
        Set wksArr(0) = Nothing: Set wksArr(1) = Nothing: Set wbk = Nothing
        DBArray = myArr
Exit Function
Fehler:
    If objDB Is Nothing Then strFehler = "Datenbank nicht gefunden !"
    If wksArr(0) Is Nothing Then strFehler = strFehler & "/Datenbank für das Jahr " & Year(Startdatum) _
        & " noch nicht angelegt !"
    If Err.Number = 1004 Then strFehler = strFehler & "/Fehler bei der Datumsübergabe ! Kein Wert gefunden !"
    strFehler = DBArray
End Function
Sub t()
Dim myArr(), intZ As Integer
myArr = DBArray(CDbl(Sheets("Test").Range("A1")), CDbl(Sheets("Test").Range("A2")))
Sheets("Test").Range("A3:Z100") = myArr
End Sub


P.S.: so sieht die Tabelle dann aus:
Test
 ABCD
3  #NVusw. bis Z100
4  #NV#NV
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Functions Array übergibt keine Werte
25.03.2006 21:53:59
MichaV
Hallo Peter,
bist Du das mal mit F8 durchgegangen und hast Dir mit der Maus die Inhalte der Variablen anzeigen lassen?
Gruß- Micha
PS: Rückmeldung wäre nett.
AW: Functions Array übergibt keine Werte
26.03.2006 14:32:11
Peter
Servus,
klar, das Problem ist das wohl ein 3-Dimensionales Array erzeugt wird (0 to 1, Zeilen, Spalten), was ich offenbar nur mit einer Schleife wieder "entladen" kann.
Schade genau das wollte ich vermeiden.
MfG Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige