Array an Funktion übergebeben

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von peterfido.

    Array an Funktion übergebeben

    Hallo Leute,

    ich habe ein Problem. Wie kann ich in VBA(Excel) Arrays an Funktionen übergeben? Ich bekomme ständig einen Fehler beim Kompilieren "Unverträglicher Typ: Datenfeld oder benutzerdefinierter Typ erwartet". Fehler in Zeile 34.

    VB.NET-Quellcode

    1. Public Function MyInStr(myString As String, array1() As String) As Boolean
    2. Dim elem As String
    3. For Each elem In array1
    4. If myString.Contains(elem) Then MyInStr = True
    5. Next
    6. MyInStr = False
    7. End Function
    8. Sub Modules()
    9. Dim wks1, wks2 As Worksheet
    10. Dim i, j, smt_End, mstr_End As Long
    11. Dim partnum(), partnum2() As String
    12. Set wks1 = Worksheets("SmartFile Data")
    13. Set wks2 = Worksheets("Tabelle1")
    14. mstr_End = wks2.Cells(wks2.Rows.Count, "AB").End(xlUp).Row
    15. ReDim partnum(1 To mstr_End)
    16. ReDim partnum2(1 To mstr_End)
    17. For i = 0 To mstr_End
    18. partnum(i) = Trim(wks2.Cells(i + 12, 3).Value)
    19. ' partnum2(i) = Trim(wks2.Cells(i + 12, 4).Value)
    20. Next i
    21. Debug.Print Join(partnum, vbLf)
    22. smt_End = wks1.Cells(wks1.Rows.Count, "J").End(xlUp).Row
    23. For j = 6 To smt_End
    24. If MyInStr(wks.Cells(j, 16).Value, partnum) = True Then wks1.Cells(j, 68).Value = wks2.Cells(i, 8).Value
    25. Next j
    26. End Sub

    Was mache ich falsch?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „FiLA85“ ()

    Hallo,

    Arrays übergebe ich immer als Variant.

    Visual Basic-Quellcode

    1. Option Explicit
    2. Private Function MyInStr(myString As String, array1 As Variant) As Boolean
    3. Dim i As Integer
    4. For i = 0 To UBound(array1)
    5. If Trim(array1(i)) = Trim(myString) Then
    6. MyInStr = True
    7. Exit For
    8. End If
    9. Next
    10. End Function
    11. Private Sub test()
    12. Dim S As String
    13. Dim Arry As Variant
    14. Arry = Split("Lorem|ipsum|dolor|sit|amet|consectetur|adipisci|velit", "|", , vbTextCompare)
    15. S = "doof"
    16. Debug.Print MyInStr(S, Arry)
    17. End Sub
    Gruß
    Peterfido

    Keine Unterstützung per PN!