Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1904to1908
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

Application.Run löst Fehlermeldung aus

Application.Run löst Fehlermeldung aus
01.11.2022 18:54:20
Shouchen
Hallo allerseits,
ich hoffe ich habe ein nicht zu triviales Problem, da ich niemanden nerven will.
Ich habe kürzlich herausgefunden dass, man Funktionsaufrufe (Oder Subs) wunderbar dynamisch aufrufen kann.
Nun habe ich eine Userform und würde gerne, wenn ich auf einen Button "Weiter" klicke, will ich je nach Auswahl eine andere Folgeliste anzeigen.
Das funktioniert auch mit .Selection(0), .Selection(1) in einer ellenlangen If Anweisung.
Also will ich es mit der Variable y gerne dynamisch gestalten und damit die Funktionen "Kategorie" & y aufrufen.
Also Application.Run "Kategorie" & y, x
Leider bekomme ich ständig die Fehlermeldung:
"Das Makro 'Kategorie0' kann nicht ausgeführt werden.
Das Makro ist möglicherweise in dieser Arbeitsmappe nicht verfügbar, oder alle Makros wurden deaktiviert.
wenn ich das Sub aber einfach durch Kategorie0, x aufrufe, führt er den Code wie gewünscht aus.
Kann mir jemand dazu einen Rat geben? Ich google schon eine Weite, finde aber nichts sinnvolles. :(

Private Sub Weiter_Click()
If Kategorien.ListIndex = -1 Then
MsgBox ("Du musst etwas auswählen Amigo!")
Else
'Laufvariable für Erfassung Typ
Dim x As Integer
x = 1
'Variable für Selected
Dim y As Integer
y = 0
Do While Not IsEmpty(Worksheets(1).Cells(x, 1))
x = x + 1
Loop
'Fülle Liste mit Typen
y = Kaufmenue.Kategorien.ListIndex
MsgBox (y)
'Kategorie0 x
Application.Run "Kategorie" & y, x
End If
End Sub
Private Sub UserForm_Initialize()
Kategorien.ColumnHeads = True
Kategorien.RowSource = "Liste!AC2:AC10"
End Sub
Private Sub Zurück_Click()
Kategorien.Clear
Kategorien.ColumnHeads = True
Kategorien.RowSource = ""
Kategorien.RowSource = "Liste!AC2:AC10"
End Sub
Sub Kategorie0(ByVal x As Integer)
Kaufmenue.Kategorien.ColumnHeads = False
Dim str1 As String
Kaufmenue.Kategorien.RowSource = ""
For i = 2 To x
If Worksheets(1).Cells(i, 1) = Worksheets(1).Cells(2, 29) Then
str1 = Worksheets(1).Cells(i, 3).Value
With Kaufmenue.Kategorien
.AddItem str1
End With
End If
Next
End Sub
Sub Kategorie1(ByVal x As Integer)
Kaufmenue.Kategorien.ColumnHeads = False
Dim str1 As String
Kaufmenue.Kategorien.RowSource = ""
For i = 2 To x
If Worksheets(1).Cells(i, 1) = Worksheets(1).Cells(3, 29) Then
str1 = Worksheets(1).Cells(i, 3).Value
With Kaufmenue.Kategorien
.AddItem str1
End With
End If
Next
End Sub
Sub Kategorie2(ByVal x As Integer)
Kaufmenue.Kategorien.ColumnHeads = False
Dim str1 As String
Kaufmenue.Kategorien.RowSource = ""
For i = 2 To x
If Worksheets(1).Cells(i, 1) = Worksheets(1).Cells(3, 29) Then
str1 = Worksheets(1).Cells(i, 3).Value
With Kaufmenue.Kategorien
.AddItem str1
End With
End If
Next
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Application.Run löst Fehlermeldung aus
01.11.2022 19:34:10
ralf_b
erkläre doch mal etwas genauer was du vorhast.
für mich sieht das auf den ersten Blick wie eine abhängige Dropdownliste aus.
Und sowas ist eigentlich trivial. Kommt aber drauf an was man vorhat und ob man einem Helfer den nötigen Einblick gibt.
AW: Application.Run löst Fehlermeldung aus
01.11.2022 19:46:57
GerdL
Guten Abend,
es kommt immer drauf an. Hatte kleine Lust zum Nachbauen.
Probier mal statt Run mit erforderlicher Variantvariable mit Call.
Die aufgerufenen Prozeduren unterscheiden sich nämlich nur an einer Stelle (Zeile) u.
man kann sie daher eindampfen.

Private Sub Weiter_Click()
If Kategorien.ListIndex = -1 Then
MsgBox ("Du musst etwas auswählen Amigo!")
Else
'Laufvariable für Erfassung Typ
Dim x As Long
x = 1
'Variable für Selected
Dim y As Long
Do While Not IsEmpty(Worksheets(1).Cells(x, 1))
x = x + 1
Loop
'Fülle Liste mit Typen
y = Kaufmenue.Kategorien.ListIndex
MsgBox (y)
'Kategorie0 x
Call Kategorie(x, y)
End If
End Sub
Sub Kategorie(ByVal x As Long, y As Long)
Kaufmenue.Kategorien.ColumnHeads = False
Dim str1 As String
Kaufmenue.Kategorien.RowSource = ""
If y > 0 Then y = 1
For i = 2 To x
If Worksheets(1).Cells(i, 1) = Worksheets(1).Cells(2 + y, 29) Then
str1 = Worksheets(1).Cells(i, 3).Value
With Kaufmenue.Kategorien
.AddItem str1
End With
End If
Next
Private Sub UserForm_Initialize()
Kategorien.ColumnHeads = True
Kategorien.RowSource = "Liste!AC2:AC10"
End Sub
Gruß Gerd
Anzeige
AW: Application.Run löst Fehlermeldung aus
02.11.2022 10:49:57
Shouchen
Vielen Dank für die Kommentare:
@ralf_b: Hat sich tatsächlich erledigt, ich habe den Ratschlag von GerdL berücksichtigt. :)
@snb: Das erklärt warum das nicht funktioniert, es scheint einfach nicht in den Features enthalten zu sein.
Zumindest sieht das so für mich aus.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige