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

Macro-Aufruf

Macro-Aufruf
10.07.2015 15:27:17
Rosenfeld
Hallo zusammen,
ich habe mehrere Codes mit jeweils unterschiedlichen Namen
Schema1, Schema2, Schema3 usw.
Derzeit greife ich auf diese Codes explicit zu.
Call Schema1, Call Schema2, Call Schema3 usw.
Kann ich auf die Codes auch über einen Zufallsgenerator zugreifen?
Und wenn ja, wie muss ich das anstellen?
Gruß
Siegfried

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

Betreff
Datum
Anwender
Anzeige
AW: Macro-Aufruf
10.07.2015 15:59:33
ransi
Hallo Siegfried,
Eine Möglichkeit ist so:
Option Explicit

Sub machs()
    Randomize Timer
    Select Case Int(3 * Rnd + 1)
        Case 1: Call Schema1
        Case 2: Call Schema2
        Case 3: Call Schema3
    End Select
End Sub


ransi

Anzeige
AW: Macro-Aufruf
10.07.2015 16:31:20
Rosenfeld
Hallo ransi und Beni
Danke euch beiden.
Die Version von ransi ist mir sympatischer.
Gruß
Siegfried

AW: Macro-Aufruf
10.07.2015 16:45:40
Beni
mir auch

AW: noch ne Variante...
10.07.2015 16:46:01
daniel
...Wenn die Makros tatsächlich so benannt sind (gleicher Name + Zählnummer von 1-x):
Application.Run "Schema" & Worksheetfunction.randbetween(1, 3)
Gruß Daniel

AW: noch ne Variante...
10.07.2015 18:26:44
Rosenfeld
Hallo Daniel,
auch Dir ein Dankeschön.
die Macros habe ich tatsächlich so benannt.
Die Version von ransi habe ich eingesetzt, sie funktioniert.
Deine Version ist allerdings deutlich kürzer.
Gruß
Siegfried

Anzeige
AW: Macro-Aufruf
10.07.2015 16:02:21
Beni
Hallo
Dim Wert muss ausserhalb der Prozedur stehen
Gruss Beni
Dim Wert
Sub Makro23()
Randomize    ' Zufallszahlengenerator initialisieren.
Wert = Int((3 * Rnd) + 1)    ' Zufallszahlen im Bereich von 1 bis 3 generieren.
Call Schema
End Sub

Sub Schema()
If Wert = 1 Then MsgBox "Schema1"
If Wert = 2 Then MsgBox "Schema2"
If Wert = 3 Then MsgBox "Schema3"
' usw
End Sub

Du hättest 'Wert' auch an 'Schema' übergeben ...
10.07.2015 19:19:48
Luc:-?
…können (als Parameter!), Beni;
falls die Makros in einem Klassenmodul stünden, gäb's auch noch eine Möglichkeit mit CallByName, Siegfried,
die dann ähnlich kurz wäre wie Daniels, weil hierbei der MakroName ebenfalls als Text verwendet wdn kann:
Sub Rufen()
Dim n As Integer
Randomize: n = Rnd() * 100 Mod 3 + 1
CallByName Tabelle1, "Makro" & CStr(n), VbMethod
End Sub
Die 3 Makros müssten dann im DokumentKlassenmodul eines Blattes (hier Tabelle1) stehen (der hier verwendete CodeName des betreffenden Blattes ist dabei zwingend erforderlich!).
Gruß, Luc :-?
Besser informiert mit …

Anzeige
Application.Run
10.07.2015 19:46:40
ransi
Hallo,
Nur damits auch halbwegs vollstädig ist:
Application.Run kanns auch...
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub Machs()
    Randomize Timer
    Application.Run "Modul1.Schema" & Int((3 * Rnd) + 1)
End Sub


Sub Schema1()
    MsgBox "Schema1"
End Sub


Sub Schema2()
    MsgBox "Schema2"
End Sub


Sub Schema3()
    MsgBox "Schema3"
End Sub


ransi

Anzeige
Ist Variante zu Daniels 'Run'! Gruß owT
11.07.2015 01:07:59
Luc:-?
:-?

oooops...
11.07.2015 20:29:51
ransi
...hatte ich überlesen.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige