Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1852to1856
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
Inhaltsverzeichnis

Zu viele Argumente bei Übergabe zu Sub

Zu viele Argumente bei Übergabe zu Sub
03.11.2021 21:54:38
Tobi
Hallo, ich muss einem Sub eine Menge von Argumenten übergeben.
Leider kommt eine Fehlermeldung dass es zu viele Argumente sind.
Kann mir jemand dabei helfen?
Wie kann man es anders lösen?

Sub Test(Wert1 As String, Wert2 As String, Wert3 As String, Wert4 As String, Wert5 As String, Wert6 As String, Wert7 As String, Wert8 As String, Wert9 As String, Wert10 As String, Wert11 As String, Wert12 As String, Wert13 As String, Wert14 As String, Wert15 As String, Wert16 As String, Wert17 As String, Wert18 As String, Wert19 As String, Wert20 As String, Wert21 As String, Wert22 As String, Wert23 As String, Wert24 As String, Wert25 As String, Wert26 As String, Wert27 As String, Wert28 As String, Wert29 As String, _
Wert30 As String, Wert31 As String, Wert32 As String, Wert33 As String, Wert34 As String, Wert35 As String, Wert36 As String, Wert37 As String, Wert38 As String, Wert39 As String, Wert40 As String, Wert41 As String, Wert42 As String, Wert43 As String, Wert44 As String, Wert45 As String, Wert46 As String, Wert47 As String, Wert48 As String, Wert49 As String, Wert50 As String, Wert51 As String, Wert52 As String, Wert53 As String, Wert54 As String, Wert55 As String, Wert56 As String, Wert57 As String, Wert58 As String, Wert59 As String, _
Wert60 As String,Wert61 As String, Wert62 As String, Wert63 As String, Wert64 As String, Wert65 As String, Wert66 As String, Wert67 As String, Wert68 As String, Wert69 As String)
End Sub
Liebe Grüße
Tobi

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zu viele Argumente bei Übergabe zu Sub
03.11.2021 22:31:51
volti
Hallo Tobi,
arbeite mit einem Array und übergebe dieses an Deine Sub.
Beispiel:
Code:

[Cc]

Sub Haupt() Dim sWert(50) As String sWert(1) = "Nummer1" sWert(10) = "Nummer10" Call Test(sWert()) End Sub Sub Test(sWert() As String) Debug.Print sWert(1), sWert(10) End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Zu viele Argumente bei Übergabe zu Sub
04.11.2021 13:22:45
Tobi
Hallo, Danke.
Für einen Fall funktioniert das Prima.
Ich habe aber eine Stelle da muss ich Stings und ein Long übergeben.
Kannst du mir auch dabei helfen?
Liebe Grüße
Tobi
AW: Zu viele Argumente bei Übergabe zu Sub
04.11.2021 14:10:45
volti
Hallo Tobi,
Du kannst ja noch diverse weitere Parameter extra übergeben oder Du arbeitest mit einem Variant-Typen...
Code:

[Cc]

' So Sub Haupt1() Dim sWert(50) As String, lwert As Long sWert(1) = "Nummer1" sWert(10) = "Nummer10" lwert = 123456 Call Test1(sWert(), lwert) End Sub Sub Test1(sWert() As String, lwert As Long) Debug.Print sWert(1), sWert(10), lwert End Sub ' oder so Sub Haupt2() Dim vWert(50) As Variant vWert(1) = "Nummer1" vWert(10) = "Nummer10" vWert(5) = 123456 Call Test2(vWert()) End Sub Sub Test2(vWert() As Variant) Debug.Print vWert(1), vWert(10), vWert(5) End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
Vielen Dank ... so funktioniert es owT
04.11.2021 16:38:01
Tobi
AW: Zu viele Argumente bei Übergabe zu Sub
03.11.2021 23:00:25
Yal
Hallo Tobi,
wenn der tatsächliche Anzahl an Argument nie fest sind, kannst Du ParamArray verwenden:

Public Function Multiplizieren(ParamArray Param()) As Long
Dim E
Multiplizieren = 1
For Each E In Param
Multiplizieren = Multiplizieren * E
Next
End Function
Sub test_Multiplizieren()
Debug.Print Multiplizieren(1, 2) '2
Debug.Print Multiplizieren(1, 2, 3) '6
Debug.Print Multiplizieren(1, 2, 3, 4) '24
Debug.Print Multiplizieren(1, 2, 3, 4, 5) '120
End Sub
Zum Beispiel um die sehr gute Function TextVerketten als UDF nachzubauen, die es leider nur in 365 gibt:

Public Function TextVerketten(Trenner As String, IgnoreEmpty, ParamArray Str())
Dim E
For Each E In Str
If (E  "") Or Not IgnoreEmpty Then TextVerketten = TextVerketten & Trenner & E
Next
TextVerketten = Mid(TextVerketten, Len(Trenner) + 1)
End Function
VG
Yal
Sub Test_TextVerketten()
Debug.Print TextVerketten("-", True, "das", "ist", "", "ja", "wundebar") 'das-ist-ja-wundebar
Debug.Print TextVerketten("-", False, "das", "ist", "", "ja", "wundebar") 'das-ist--ja-wundebar
End Sub
Die Argument in dem ParamArray müssen aber schlüssig sein: alles nur Zahl, oder alles nur Text oder alles nur Zellebreich (Range), usw.
Wenn etwas nicht in der Reihe passt, muss vorher. Wie bei Trenner und IgnoreEmpty.
VG
Yal
Anzeige
OT: TEXTVERKETTEN muss niemand mehr ...
04.11.2021 04:07:51
Luc:-?
...zum xten Mal nachbauen, Yal,
UDFs dazu gibt's schon länger als die beiden xlFktt, darunter auch leistungsfähigere (auch im hiesigen Archiv)... ;-]
Morhn, Luc :-?
Tja: 10 min suchen oder 3 min nachbauen? :-)
04.11.2021 08:24:16
Yal
Vielen Dank für den Hinweis. Ich schaue nach.
Ich habe es als Illustrationsbeispiel benutzt, weil es eben bekannt ist.
VG
Yal
3 min wären kein Qualitätsmerkmal... :-) owT
04.11.2021 17:25:19
Luc:-?
:-?
bei einfacher Lösung merke ich mir lieber ...
04.11.2021 18:27:27
Yal
... die Lösung als wo ich sie finden kann (mist, doch nicht da wo ich dachte!)

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige