Anzeige
Archiv - Navigation
1668to1672
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

VBA Prozeduraufruffehler oder ein ungültiges Argum

VBA Prozeduraufruffehler oder ein ungültiges Argum
19.01.2019 15:14:01
SteinApfel
Hey liebe Community,
ich habe erneut ein Problem. Im Folgenden könnt ihr die beiden Funktionen einsehen. Die erste Funktion soll Daten an die zweite weitergeben, da das die einzigen Variablen sind, der Rest ist davon abhängig oder ergibt sich.
Die erste Funktion läuft ohne Probleme durch, die zweite jedoch "meckert" an der stelle von Var1V (Match-Funktion). Dort ist angeblich ein Prozeduraufruffehler oder ein ungültiges Argument, ich mir aktuell nicht vorstellen woran es liegt.
Ich hoffe Ihr könnt mir schnell helfen. Vielen Dank für eure Bemühungen.
Bei Fragen gerne an mich wenden, dann füge ich weitere Informationen hinzu.
Beste Grüße
Hendrik
Public Function LinInt_Linienlast()
Dim ListeV As range
Dim ListeH As range
Dim intVert As Integer
Dim intHori As Integer
Dim ListEnde As Integer
With WSFeldmeier
Set ListeV = .range("I15:I28")
Set ListeH = .range("J14:O14")
intVert = 15
intHori = 9
ListEnde = 28
Call LinInt_Linienlast_Hilfsfunktion(ListeV, ListeH, intVert, intHori, ListEnde)
IntCf = IntC
End With
End Function
Public Function LinInt_Linienlast_Hilfsfunktion()
Dim Vert As Double
Dim Hori As Double
Dim X1 As Double
Dim X2 As Double
Dim Y1 As Double
Dim Y2 As Double
Dim Z1 As Double
Dim Z2 As Double
Dim Z3 As Double
Dim Z4 As Double
Dim H1 As Double
Dim H2 As Double
Dim ListeV As range
Dim ListeH As range
Dim Var1V As Double
Dim Var2V As Double
Dim Var1H As Double
Dim Var2H As Double
Dim VarV As Double
Dim VarH As Double
If WSEinst.CBLagerung = "allseitig liniengelagert" Then
Vert = WSEinst.range("Breite") / WSEinst.range("Höhe")
Hori = WSEinst.range("hHolm") / WSEinst.range("Höhe")
With WSFeldmeier
If Hori > 0.5 Then Hori = 0.5 - (Hori - 0.5)
Var1V = Application.WorksheetFunction.Match(Vert, ListeV, 1) + intVert
End Function

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Prozeduraufruffehler oder ein ungültiges Argum
19.01.2019 15:18:10
Hajo_Zi
Die Variable ListeV ist nicht belegt.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: VBA Prozeduraufruffehler oder ein ungültiges Argum
19.01.2019 15:24:19
SteinApfel
In wie fern ist diese nicht belegt? Oder genauer gefragt, was meinst du mit "belegt"?
"Set ListeV = ...." habe ich doch gemacht und wird anschließend weitergegeben!?
AW: VBA Prozeduraufruffehler oder ein ungültiges Argum
19.01.2019 15:26:00
Hajo_Zi
aber nicht in dieser Funktion, da steht nur die dimensionierung und damit ist es Leer.
Gruß Hajo
Anzeige
AW: VBA Prozeduraufruffehler oder ein ungültiges Argum
19.01.2019 15:29:34
SteinApfel
Oh habe die Deklaration nicht rausgenommen von ListeV und ListeH.
Nachdem ich die jetzt in der unteren/zweiten Funktion rausgenommen habe sollten diese nun nicht mehr leer sein.
Jetzt kommt an selber Stelle folgender Fehler:
"Die Match-Eigenschaft des WorksheetFunction-Objektes kann nicht zugeordnet werden."
AW: VBA Prozeduraufruffehler oder ein ungültiges Argum
19.01.2019 15:36:24
Luschi
Hallo SteinApfel,
Du übergibst zwar die Variablen:
Call LinInt_Linienlast_Hilfsfunktion(ListeV, ListeH, intVert, intHori, ListEnde)
aber die aufgerufene Function nimmt nicht entgegen:
Public Function LinInt_Linienlast_Hilfsfunktion()
wenn schon dann so:
Public Function LinInt_Linienlast_Hilfsfunktion(rgListeV As Range, _
rgListeH As Tange, _
iIntVert As Integer _
iIntHori As Integer, _
iListEnde As Integer)
Damit kennt diese HilfsFunktion auch die vorher definierten Variablen.
Oder Du mußt die Variablen auslagern und 'Public' machen.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: VBA Prozeduraufruffehler oder ein ungültiges Argum
19.01.2019 15:48:12
SteinApfel
Auch dir Danke für deine Hilfe.
Nun funktioniert es. :)
AW: VBA Prozeduraufruffehler oder ein ungültiges Argum
19.01.2019 15:38:00
Zwenn
Hallo SteinApfel,
du deklarierst alle Variablen in der zweiten Funktion im Funktionsrumpf, auch die, die Du übergeben willst. Das ist falsch. Variablen, die Du übergeben willst gehören in die Klammern im Funktionskopf.
Wenn Du folgende Prozedur hast, aus der Du eine andere mit Parametern aufrufen willst:

Sub Test1()
Dim variableFuerSub2 As Integer
variableFuerSub2 = 100
call TestSub2(variableFuerSub2)
End Sub

Dann muss die zweite Procedur NICHT so aussehen (Deine Variante):
(variableFuerSub2 wird lokal deklariert und mit 0 vorbelegt)

Sub ResrSub2()
Dim variableFuerSub2 As Integer
... mach was mit der Variable
End Sub

Sondern so:
(variableFuerSub2 wird als Übergabeparameter deklariert und bekommt die 100 aus der aufrufenden Prozedur verpasst)

Sub ResrSub2(erwarteteZahl As Integer)
... mach was mit der übergebenen Variable
End Sub

Wie Du siehst, darf der Name der Variablen im Prozedurkopf von der übergebenen Variable abweichen. Wichtig ist, dass der Datentyp gleich ist. Im Beispiel Integer.
Ferner hast Du Funktionen geschrieben. Die sind dafür da, um in Tabellenblättern mit ihnen zu arbeiten oder wenn Du aus der aufgerufenen Funktion einen Wert an die aufrufende Funktion zurückliefern willst. Wenn das nicht der Fall ist, verwendet man Subs. Die können keine Werte zurückgeben.
Viele Grüße,
Zwenn
Anzeige
AW: VBA Prozeduraufruffehler oder ein ungültiges Argum
19.01.2019 15:47:41
SteinApfel
Danke für die ausführliche Antwort.
Habe es angepasst, ebenso habe ich Subs aus den Funktionen gemacht. Das lag noch daran, dass ich zuerst vorhatte Werte entsprechend zu übergeben, aber das hat sich jetzt doch wieder geändert :D
Nun funktioniert es.
AW: VBA Prozeduraufruffehler oder ein ungültiges Argum
19.01.2019 15:31:40
Nepumuk
Hallo,
damit die Parameter in der aufgerufenen Prozedur ankommen, musst du sie auch deklarieren. Also:
Public Function LinInt_Linienlast_Hilfsfunktion(ListeV As Range, _
    ListeH As Range, intVert As Integer, intHori As Integer, ListEnde As Integer)


Warum benutzt du eigentlich Funktionen wenn du keinen Rückgabewert erwartest? Dafr gibt es Sub - Prozeduren.
Gruß
Nepumuk
Anzeige
AW: VBA Prozeduraufruffehler oder ein ungültiges Argum
19.01.2019 15:46:19
SteinApfel
Okay, dann habe ich es jetzt. :)
Vielen Dank für die schnelle und ausführliche Antwort. Das hat mir sehr gut weitergeholfen.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige