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

Wie wird ein Array an eine Prozedur übergeben?

Wie wird ein Array an eine Prozedur übergeben?
06.10.2004 20:54:32
Thorsten
Hallo Hallo Hallo,
kann mir jemand helfen
ich möchte aus einer Funktion einen Array übergeben.
Hier der Code. Bekomme aber hier mit keinen Array zurück.
Mir fehlt der Aufruf der Funktion, indem ich den Array wieder zurückbekomme.

Sub start()
Dim wert As String
Dim barray() As String
wert = "5"
barray = Modul2.finden2(wert)
Dim i As Long
i = 0
For i = 0 To UBound(barray)
MsgBox barray(i)
Next
End Sub


Function finden2(Zahl As String) As String
Dim zelle As Range
Dim zeile As Long
Dim bestand_array() As String
ReDim bestand_array(0 To 0)
With Range("A:A")
Set zelle = .Find(Zahl)
If Not zelle Is Nothing Then
ersteAdresse = zelle.Address
zeile = zelle.Row
bestand_array(0) = Format(zeile, "00000") & "  " & Cells(zeile, 2) & "  " & Cells(zeile, 3)
Do
Set zelle = .FindNext(zelle)
If zelle.Address <> ersteAdresse Then
zeile = zelle.Row
ReDim Preserve bestand_array(0 To UBound(bestand_array) + 1)
bestand_array(UBound(bestand_array)) = Format(zeile, "00000") & "  " & Cells(zeile, 2) & "  " & Cells(zeile, 3)
End If
Loop While Not zelle Is Nothing And zelle.Address <> ersteAdresse
Else
MsgBox "keine Werte vorhanden"
End If
End With
finden2 = bestand_array
End Function

Danke schon mal für die hilfe.
gruss
Thorsten

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wie wird ein Array an eine Prozedur übergeben?
Klaus
Hallo Thorsten,
es sollte gehen, indem du die Funktion als Variant deklarierst:

Function finden2(Zahl As String) As Variant
'dein weiterer Code .....
End Function

Gruß Klaus
AW: Wie wird ein Array an eine Prozedur übergeben?
06.10.2004 21:21:25
Thorsten
Danke für die schnelle Hilfe,
das funktioniert aber auch nicht,
in der Zeile
barray = Modul2.finden2(wert)

kommt immer die fehlermeldung:
Keine Zuweisung an Datenfeld möglich
liegt es vielleicht an der alten Excel bzw VB-Version?
AW: Wie wird ein Array an eine Prozedur übergeben?
Reinhard
Hi Thorsten,
m.E, kann function nur einen Wert zurückgeben, also nicht das array, aber zB das ubound des arrays:

Option Base 1
Dim arr() As Integer
Sub tt()
x = füllen
For n = 1 To x
MsgBox arr(n)
Next n
End Sub
Function füllen()
[A1] = 5
[A2] = 13
[A3] = 127
zeile = 1
While Cells(zeile, 1) <> ""
ReDim Preserve arr(zeile)
arr(zeile) = Cells(zeile, 1)
zeile = zeile + 1
Wend
füllen = UBound(arr)
End Function

Gruß
Reinhard
Anzeige
AW: Wie wird ein Array an eine Prozedur übergeben?
06.10.2004 21:25:31
Thorsten
Danke für die Info,
jedoch könnte ich dann in diesem Fall auch den Array global setzen, damit könnte man dann direkt auf die Werte im Array zugreifen. nur diese Lösung wollte ich nicht benutzen.
trotzdem danke.
AW: Wie wird ein Array an eine Prozedur übergeben?
06.10.2004 21:44:49
Thorsten
Hallo, nochmals eine Frage
habe nun versicht den Array global zu setzten.
aber nun bekomme ich eine fehlermeldung beim der Range-Variable
ersteAdresse = zelle.Address
habe die Datei nun mal mit hochgeladen,
vielleicht hat jemand eine Lösung.
https://www.herber.de/bbs/user/11768.xls
Danke
Anzeige
AW: Wie wird ein Array an eine Prozedur übergeben?
06.10.2004 22:01:02
Nepumuk
Hallo Thorsten,
ganz einfach:


Sub start()
    Dim wert As String, barray As Variant, i As Long
    wert = "5"
    barray = finden2(wert)
    For i = 1 To UBound(barray)
        MsgBox barray(i)
    Next
End Sub
Function finden2(Zahl As StringAs Variant
    Dim zelle As Range, zeile As Long, ersteAdresse As String
    ReDim bestand_array(0 To 0)
    With Range("A:A")
        Set zelle = .Find(Zahl)
        If Not zelle Is Nothing Then
            ersteAdresse = zelle.Address
            Do
                zeile = zelle.Row
                ReDim Preserve bestand_array(0 To UBound(bestand_array) + 1)
                bestand_array(UBound(bestand_array)) = Format(zeile, "00000") & "  " & Cells(zeile, 2) & "  " & Cells(zeile, 3)
                Set zelle = .FindNext(zelle)
            Loop While Not zelle Is Nothing And zelle.Address <> ersteAdresse
        Else
            MsgBox "keine Werte vorhanden"
        End If
    End With
    finden2 = bestand_array
End Function


Gruß
Nepumuk
Anzeige
AW: Wie wird ein Array an eine Prozedur übergeben?
06.10.2004 22:07:30
Thorsten
ok, danke
das funktioniert.
jedoch bekomme ich nun folgende fehlermeldung zu folgendem code
ersteAdresse = zelle.Address
"Objektvariable oder With-Blockvariable nicht festgelegt"
wodran kann das liegen ?
gruss
Thorsten
AW: Wie wird ein Array an eine Prozedur übergeben?
06.10.2004 22:11:07
Nepumuk
Hallo Thorsten,
ich habe das mehrmals laufen lassen. Keine Fehlermeldung. Das kann ich nicht nachvollziehen.
Gruß
Nepumuk
AW: Wie wird ein Array an eine Prozedur übergeben?
Klaus
Hallo Thorsten,
in deiner hochgeladenen Mappe hast du ersteAdresse als Range deklariert:
Dim ersteAdresse As Range
Der Wert von zelle.address wird meines Erachtens aber als String übergeben,
z.B. als "$A$1".
Ändere also deine Deklaration mal in
Dim ersteAdresse As String
Gruß Klaus
Anzeige
AW: Wie wird ein Array an eine Prozedur übergeben?
06.10.2004 22:09:48
Thorsten
okok,
fehler gefunden.
habe die Variable ersteAdresse als Range und nicht als String gesetzt.
nun funktioniert es.
1000dank
gruss
Thorsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige