Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1692to1696
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
Array an Funktion übergeben
15.05.2019 08:55:59
Sven
Wahrscheinlich ganz einfach: Was mache ich hier falsch?
Function inArray(ByVal myArray As Variant, strValue As String) As Boolean
'Gibt true zurück, wenn das Array den Wert bereits enthält:
Dim i As Integer
inArray = False
For i = LBound(myArray) To UBound(myArray)
If myArray(i) = strValue Then
inArray = True
Exit For
End If
Next i
End Function

Private Sub UserForm_Initialize()
If inArray(strArrUnternehmen, "test") = False Then ...
End Sub
Warum ist der Index außerhalb des gültigen Bereichs? Wie übergebe ich das Array richtig?
Danke und Grüße
Sven

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Weil wir nicht wahrsagen können...
15.05.2019 09:03:39
EtoPHG
was strArrUnternehmen für ein Datentyp und dessen Inhalt ist, Sven!
Gruess Hansueli
AW: Weil wir nicht wahrsagen können...
15.05.2019 10:01:03
Sven
Hier ein größerer Einblick in die aufrufende Prozuedur:
Dim strArrUnternehmen() As String
If inArray(strArrUnternehmen, .Range("B" & i).Value) = False Then
u = u + 1
ReDim Preserve strArrUnternehmen(u - 1)
strArrUnternehmen(u - 1) = .Range("B" & i).Value
End If

Ein String ist doch kein Array! (owT)
15.05.2019 10:16:17
EtoPHG

AW: Ein String ist doch kein Array! (owT)
15.05.2019 10:17:47
Sven
Und das Array braucht keine weitere Angabe zum Datentyp?
AW: Array an Funktion übergeben
15.05.2019 09:05:39
Daniel
Hi
Wie erstellst du das Array?
Mit der Funktion kannst du nur echte eindimensionale Arrays prüfen, aber keine zweidimensionalen, wie sie bspw entstehen, wenn du Zellbereiche in ein Array übergibst.
Wenn das der Fall sein kann, nimm die Schleife
For Each X in inArray
If X  = StrValue Then
...
Die kommt mit jeder Anzahl an Dimensionen zurecht.
Gruß Daniel
Anzeige
AW: Array an Funktion übergeben
15.05.2019 09:28:19
Nepumuk
Hallo Sven,
versuch es mal so:
Function inArray(ByRef myArray() As String, ByVal strValue As String) As Boolean

Gruß
Nepumuk
AW: Array an Funktion übergeben
15.05.2019 09:58:38
Sven
Das führt leider zum selben Fehler.
AW: Array an Funktion übergeben
15.05.2019 10:21:01
Nepumuk
Hallo Sven,
teste mal:
Option Explicit
Private Declare Function SafeArrayGetDim Lib "oleaut32.dll" ( _
ByRef pArray() As Any) As Long
Function inArray(ByRef myArray() As String, ByVal strValue As String) As Boolean
'Gibt true zurück, wenn das Array den Wert bereits enthält:
Dim i As Long
If SafeArrayGetDim(myArray)  0 Then
For i = LBound(myArray) To UBound(myArray)
If myArray(i) = strValue Then
inArray = True
Exit For
End If
Next i
End If
End Function
Public Sub Test()
Dim strArrUnternehmen() As String
If inArray(strArrUnternehmen, "Test") Then
MsgBox "drin"
Else
MsgBox "nicht drin"
End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Array an Funktion übergeben
15.05.2019 10:24:10
Sven
Hallo Nepumuk,
Matthias (s.o.) hatte es schon gefunden. Am grundsätzlichen Aufbau war eigentlich alles gut, nur war beim ersten Aufruf der Funktion noch keine Dimensionierung des Arrays klar.
Danke für die Hilfe!
AW: Array an Funktion übergeben
15.05.2019 10:18:26
Matthias
Moin!
Am Anfang ist dein Array strArrUnternehmen noch kein Array. Du hast zwar den Namen deklariert aber das Ganze noch nicht initialisiert. Dimensioniere vor dem ersten Aufruf dein Array.
Bspw.:
redim strArrUnternehmen(0)
VG
AW: Array an Funktion übergeben
15.05.2019 10:22:40
Sven
Danke Matthias, das war der Fehler! Super!

37 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige