Sub und String Argumente zusammenfassen

Hallo Gemeinde,

wie kann ich in einer Sub Prozedur die Argumente zusammenfassen?

Oder muss es immer so aussehen:

Sub SubName (Arg1 As String, Arg2 As String, Arg3 As String…)

Und wieviele Argumente verträgt VBA/Access?

Und wie baue ich aus optischen Gründen im Editor einen Zeilenumbruch ein?

Grüsse aus Osnabrück,
Hans

Hallo

wie kann ich in einer Sub Prozedur die Argumente
zusammenfassen?

wie meinst Du das??

Oder muss es immer so aussehen:

Sub SubName (Arg1 As String, Arg2 As String, Arg3 As
String…)

ja, wenn es sich um einzelne Variablen handelt. Vermutlich meinst Duja auch ein Array?

Und wieviele Argumente verträgt VBA/Access?

Naja, genau kann ich da jetzt keine Zahl nennen, aber vermutlich mehr, als Du überhaupt brauchst.

Und wie baue ich aus optischen Gründen im Editor einen
Zeilenumbruch ein?

so:

Das ist eine Zeile, die _
hier einfach fortgesetzt wird

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo Hans,

wie kann ich in einer Sub Prozedur die Argumente
zusammenfassen?

keine Ahnung was du meinst?

Oder muss es immer so aussehen:
Sub SubName (Arg1 As String, Arg2 As String, Arg3 As
String…)

nein, es kann auch so aussehen (nicht „sauber“ aber funktioniert):
Sub SubName (Arg1,Arg2,Arg3…)

Und wieviele Argumente verträgt VBA/Access?

sagen wir (ich) es mal so: mehr als zehn Argumente sind ein Zeichen für falsche Programmierung.
Ich würde z.B. 100 Werte in einem Array erfassen, und das Array an die Funktion übergeben.

Beschreibe einfach mal ausführlich, was du beabsichtigst.
Bestimmt gibt es eine andere -einfachere- Lösung :smile:

Und wie baue ich aus optischen Gründen im Editor einen
Zeilenumbruch ein?

mit Leerzeichen und Unterstrich

WICHTIG: Strings müssen pro Zeile abgeschlossen sein

Beispiel:
myVar = "Dies ist ein Test " & _
"um zu zeigen, dass ein String pro " & _
„Zeile abgeschlossen werden muss“

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Du könntest auch mit der Anweisung Type eine Variable in einem öffentlichen Modul deklarieren:

Type NeuerDatentyp
arg1 type1
arg2 type2
arg3 type3
end type

Sub SubName (x as Neuerdaten)

x.arg1=„irgendwas“

end sub

Für Zeilenumbrüche nimmst du den Unterstrich

if A=B Or _
C=D Or _
D=E then

end IF

Gruß EPa

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Sub SubName (Arg1 As String, Arg2 As String, Arg3 As
String…)

ja, wenn es sich um einzelne Variablen handelt. Vermutlich
meinst Duja auch ein Array?

Wenn Beispielsweise 15 verschiedene Felder einer Tabelle übergeben werden sollen und alle als String deklariert sind.

Das ist eine Zeile, die _
hier einfach fortgesetzt wird

Mal lese ich & _
als Zeilenumbruch und mal lese ich _
als Zeilenumbruch.

Wo ist der Unterschied?

Grüsse aus Osnabrück,
George

Hallo Wolfgang,

Oder muss es immer so aussehen:
Sub SubName (Arg1 As String, Arg2 As String, Arg3 As
String…)

nein, es kann auch so aussehen (nicht „sauber“ aber
funktioniert):
Sub SubName (Arg1,Arg2,Arg3…)

Was für Konsequenzen kann das „unsaubere“ haben?

Und wieviele Argumente verträgt VBA/Access?

sagen wir (ich) es mal so: mehr als zehn Argumente sind ein
Zeichen für falsche Programmierung.
Ich würde z.B. 100 Werte in einem Array erfassen, und das
Array an die Funktion übergeben.

Beschreibe einfach mal ausführlich, was du beabsichtigst.
Bestimmt gibt es eine andere -einfachere- Lösung :smile:

Ich habe nur jetzt in einer Call-Anweisung ca. 20 Argumente, fast alles Textfelder einer Tabelle, geschrieben und sie dann noch mal in die Sub schreiben müssen.
Da fragte ich mich, ob ich da nicht irgendwie Schreibarbeit sparen kann.

Grüsse aus Osnabrück,
Hans

Moin, George,

Mal lese ich & _
als Zeilenumbruch und mal lese ich _
als Zeilenumbruch.

_ ist der Zeilenumbruch, mit & werden Strings aneinandergehängt.

Gruß Ralf

Hallo Hans,

Was für Konsequenzen kann das „unsaubere“ haben?

das Werte falsch zugeordnet werden, wenn du nicht aufpasst.
Z.B. Zahlen als Text und/oder umgekehrt

Ich habe nur jetzt in einer Call-Anweisung ca. 20 Argumente,
fast alles Textfelder einer Tabelle, geschrieben und sie dann
noch mal in die Sub schreiben müssen.
Da fragte ich mich, ob ich da nicht irgendwie Schreibarbeit
sparen kann.

ja, kann man

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

ok, habe verstanden :smile:
vielen Dank

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Was für Konsequenzen kann das „unsaubere“ haben?

das Werte falsch zugeordnet werden, wenn du nicht aufpasst.
Z.B. Zahlen als Text und/oder umgekehrt

… dann sollte man das also dringend vermeiden?!?..

Da fragte ich mich, ob ich da nicht irgendwie Schreibarbeit
sparen kann.

ja, kann man

und wie?

… dann sollte man das also dringend vermeiden?!?..

nein, nur aufpassen und/oder gut dokumentieren

Da fragte ich mich, ob ich da nicht irgendwie Schreibarbeit
sparen kann. und wie?

das frage ich mich auch, da du meine Frage diesbezüglich noch nicht beantwortet hast :frowning:
Ich/wir wissen immer noch nicht, was du eigentlich machen willst!?

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

das frage ich mich auch, da du meine Frage diesbezüglich noch
nicht beantwortet hast :frowning:
Ich/wir wissen immer noch nicht, was du eigentlich machen
willst!?

Bspw. so:

Call EineSub(Feld1, Feld2, Feld3, Feld4, Feld5, Feld6, Feld7, Feld8, Feld9, Feld10, Feld11, Feld12, Feld13, Feld14, Feld15)

Die Sub selbst:

Sub EineSub(Feld1 As String, Feld2 As String, Feld3 As String, Feld4 As String, Feld5 As String, Feld6 As String, Feld7 As String, Feld8 As String, Feld9 As String, Feld10 As String, Feld11 As String, Feld12 As String, Feld13 As String, Feld14 As String, Feld15 As String)

Ich finde, dass sieht erstens unübersichtlich aus, sowohl in der Call-Anweisung als auch in der Sub und zweitens ist das ein enormer Schreibaufwand, immer wieder ‚As String‘ zu wiederholen, spätestens dann, wenn man noch mehr Felder übergeben möchte.

Grüsse aus Osnabrück,
Hans

ok, das ist klar, die Frage ist nach wie vor:

WAS soll die Funktion denn machen?
Wofür benötigst du eine Funktion, die sooooo viele Parameter hat?

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

WAS soll die Funktion denn machen?
Wofür benötigst du eine Funktion, die sooooo viele Parameter
hat?

Eingaben und Änderungen einer Tabelle via Formular protokollieren und Änderungen plus Stammdaten in einer Tabelle festhalten, die anschliessend ausgedruckt wird.
Ein Datensatz besteht dabei aus max 80 Einträgen. Davon sollen die Änderungen plus gewisser Stammdaten (15 Einträge) festgehalten werden.

Grüsse aus Osnabrück,
Hans