Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender Navigationstipps
Inhaltsverzeichnis

application.run

application.run
15.10.2003 12:52:53
Silvia
Hi Leute,
kann mir vielleicht jemand von euch erklären, warum im u.a. Code das erste Application.run einwandfrei funktioniert und das zweite wird rot geschrieben.
Das Ziel-Makro fängt so an: Public Sub AI(tabzahl, AnzahlNC, AnzahlNNC)
Danke, Silvia


Private Sub UF2_berechnen_Click()
Dim cb As Object
Dim tabzahl As Integer
tabzahl = Worksheets.Count
Dim AnzahlNC As Integer
Dim AnzahlNNC As Integer
AnzahlNC = Worksheets(tabzahl).Cells(1, 2).Value
AnzahlNNC = Worksheets(tabzahl).Cells(2, 2).Value
For Each cb In Me.Controls
If TypeName(cb) = "CheckBox" Then
If cb.Value = True Then
Application.Run (Right(cb.name, Len(cb.name) - 2)) 'im Modul 2
Application.Run (Right(cb.name, Len(cb.name) - 2), tabzahl, AnzahlNC, AnzahlNNC)
End If
End If
Next cb
Unload Me
End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: application.run
15.10.2003 13:01:48
ChrisL
Hi Silvia

Weil es ein String brauch und weil die Klammer nicht stimmt...

aus Zeile 1 wird folgendes...
Application.Run "Makroname"

aus 2
Application.Run "Makroname", "tabzahl", "AnzahlNC", "AnzahlNNC")

statt
Application.Run "Makroname(tabzahl, AnzahlNC, AnzahlNNC)"

Versuch mal so...
Application.Run (Right(cb.name, Len(cb.name) - 2) & "(" & tabzahl & "," & AnzahlNC & "," & AnzahlNNC & ")"

Gruss
Chris
AW: application.run
15.10.2003 13:23:24
Silvia
Hi Chris,
is ja recht kompliziert mit diesen ganzen "" und (), aber schlussendlich hab ichs jetzt doch kapiert was die von dir vorgeschlagene zeile bedeutet.
(Ich denke aber, die Klammer vor Right sollte man weglassen.)

Dennoch mache ich irgendetwas falsch, denn:
mit folgendem Code bekomme ich die Fehlermeldung: Laufzeitfehler 1004, kann das Makro 'AI(2,2,3)' nicht finden.

Private Sub UF2_berechnen_Click()
Dim cb As Object
Dim tabzahl As Integer
tabzahl = Worksheets.Count
Dim AnzahlNC As Integer
Dim AnzahlNNC As Integer
AnzahlNC = Worksheets(tabzahl).Cells(1, 2).Value
AnzahlNNC = Worksheets(tabzahl).Cells(2, 2).Value
For Each cb In Me.Controls
If TypeName(cb) = "CheckBox" Then
If cb.Value = True Then
'Application.Run Right(cb.name, Len(cb.name) - 2) & "(" & tabzahl & "," & AnzahlNC & "," & AnzahlNNC & ")"
'Application.Run Right(cb.name, Len(cb.name) - 2) & "(tabzahl, AnzahlNC, AnzahlNNC)"
Application.Run Right(cb.name, Len(cb.name) - 2) & "(2, 3, 3)"
End If
End If
Next cb
Unload Me
End Sub
Sub AI(tabzahl, AnzahlNC, AnzahlNNC)
MsgBox (tabzahl & AnzahlNC & AnzahlNNC)
End Sub

Anzeige
AW: application.run
15.10.2003 13:42:42
ChrisL
Hi Silvia

Überprüfe mal ob insbesondere der Makroname richtig ist...

MsgBox Right(cb.name, Len(cb.name) - 2) & "(2, 3, 3)"

Theoretisch sollte es gehen... siehe nachstehender Code:

Option Explicit


Sub test()
Dim Makroname As String
Dim Anz1 As Byte, Anz2 As Byte, Anz3 As Byte
Anz1 = 1
Anz2 = 2
Anz3 = 3
Makroname = "AI"
Application.Run Makroname & "(" & Anz1 & "," & Anz2 & "," & Anz3 & ")"
End Sub



Sub AI(tabzahl As Byte, AnzahlNC As Byte, AnzahlNNC As Byte)
MsgBox (tabzahl & AnzahlNC & AnzahlNNC)
End Sub


Gruss
Chris
Anzeige
AW: application.run ???????
15.10.2003 13:54:37
Silvia
Vielen herzlichen Dank für deine Bemühungen,

aber bei mir funkts einfach nicht.
(wenn ich deinen Code einfüge, und die test()-Sub starte, findet er die AI(1,2,3) wieder nicht !!!)

funktioniert dein Code bei dir?
AW: application.run ???????
15.10.2003 14:12:11
ChrisL
Hi Silvia

Klar funktioniert der Code bei mir :-)

Habe mal eine Datei angehängt...
https://www.herber.de/bbs/user/1430.xls

Benutze allerdings Excel 97. Wenn bei dir eine Fehlermeldung kommt, sobald du auf den Knopf drückst, dann muss es fast an der Version liegen.

Gruss
Chris
Anzeige
Versions-Problem ???
15.10.2003 14:24:07
Silvia
Hallo Chris,

es tut mir furchtbar leid, dass du dir wg meinem Problem soviel Mühe gibst und trotzdem funzts nicht bei mir.

Excel XP schreibt:
Microsoft Excel kann das Makro 'AI(1,2,3)' nicht finden

Hat vielleicht sonst jemand, der XP benutzt, einen Lösungsvorschlag für mich?

lg und nochmals Danke an Chris,
Silvia
OFFEN
15.10.2003 14:28:51
ChrisL
Hi Silvia

Vielleicht lässt sich die Katze auch am Schwanz packen. Wie sieht denn der Code, welcher im Sub AI steht eigentlich aus. Vielleicht gibt es ja auch bessere Alternativen.

Gruss
Chris
AW: OFFEN
15.10.2003 14:57:15
Silvia
Hi Leute, Hi Chris,
ich hab mich jetzt einmal ganz genau an die VBA-Hilfe gehalten und hab statt einer aufzurufenden Sub jetzt eine Function genommen,
und siehe da, das funktioniert.
Anscheinend funkt die Application.Run nicht mit Subs.
Kann mir vielleicht jemand eine Alternative zu Application.Run vorschlagen, die für Subs geeignet ist?

BITTE, BITTE
Silvia
Anzeige
AW: OFFEN
15.10.2003 15:21:05
ChrisL
Hi Silvia

Subs geht nur mit Call oder Application.Run. Wobei du für Call keine Variablen verwenden kannst.

Wieso benutzt du jetzt nicht einfach die Funktion. Oder ist eine Funktion für das Problem nicht geeignet.

Wie gesagt müsste man mal wissen, was im Sub überhaupt steht.

Gruss
Chris
AW: OFFEN
15.10.2003 23:06:36
Martin
Hallo Silvia und Chris

ich habe das Makro von Chris bei mir unter XP getestet, und es funktioniert so tatsächlich nicht. Es brauchte aber nur eine kleine Aenderung, dann funktioniert es:


Sub test()
Dim Makroname As String
Dim Anz1 As Byte, Anz2 As Byte, Anz3 As Byte
Anz1 = 1
Anz2 = 2
Anz3 = 3
Makroname = "AI"
Application.Run Makroname, Anz1, Anz2, Anz3
End Sub



Sub AI(tabzahl As Byte, AnzahlNC As Byte, AnzahlNNC As Byte)
MsgBox (tabzahl & AnzahlNC & AnzahlNNC)
End Sub


Gruss
Martin
Anzeige
danke
16.10.2003 11:02:55
Silvia
Herzlichen Dank an Chris und Martin.

Ich habs mittlerweile mit einer Funktion (nicht mit Sub) gelöst. War für meine Problemstellung das Beste:


Private Sub UF2_berechnen_Click()
Dim cb As Object
Dim tabzahl As Integer
tabzahl = Worksheets.Count
Dim AnzahlNC As Integer
Dim AnzahlNNC As Integer
AnzahlNC = Worksheets(tabzahl).Cells(1, 2).Value
AnzahlNNC = Worksheets(tabzahl).Cells(2, 2).Value
Dim zaehler As Integer
zaehler = 2
For Each cb In Me.Controls
If TypeName(cb) = "CheckBox" Then
If cb.Value = True Then
zaehler = Application.Run(Right(cb.name, Len(cb.name) - 2), tabzahl, AnzahlNC, AnzahlNNC, zaehler) + zaehler
End If
End If
Next cb
Unload Me
End Sub
Function AI(tabzahl, AnzahlNC, AnzahlNNC, zaehler)
AI = 1
End Function

lg, Silvia
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge