Access-o-Mania

Office-Forum (Deutsch/German) => Microsoft Excel => Thema gestartet von: Pergus am April 10, 2020, 13:28:01

Titel: Makro auszuführen, deren Code-Zeilen in einer Zelle im Excel-Tabellenblatt steht
Beitrag von: Pergus am April 10, 2020, 13:28:01
Hallo liebe Excel-Freunde!

Mir schwebt eine unübliche Lösung vor für eine Excel-Tabelle,
die eine Sammlung von Makro-Befehlen und deren Codezeilen enthalten soll.

Nun stellt sich mir die folgende Frage:
Ist es grundsätzlich möglich ein Makro auszuführen, deren Code-Zeilen in einer Zelle im Excel-Tabellenblatt steht?

z.B.:
In der Zelle B3 steht der Name, wie die Makro-Subroutine heißen soll
In der Zelle C3 steht die Codezeile für das Makro.

somit, wenn folgendes in der Tabelle steht...

B3 = ZelleAuswaehlenZ1S1
C3 = Worksheets("Tabelle1").Cells(3, 2).Select

...sollte das Makro folgendermaßen ausgeführt werden, sobald auf die Zelle 'C3' doppelgeklickt wurde:

Sub ZelleAuswaehlenZ1S1()
    Worksheets("Tabelle1").Cells(3, 2).Select
End Sub


Hat jemand eine Idee dazu?

Vielen Dank schon Mal im Voraus und liebe aus Südtirol!
Gustav
Titel: Re: Makro auszuführen, deren Code-Zeilen in einer Zelle im Excel-Tabellenblatt steht
Beitrag von: Sebi am April 10, 2020, 14:28:11
Huhu,
ungestestet sollte das so an sich gehen.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("C3")) Is Nothing Then
call Worksheets("Tabelle1").Range("B3").value
End Sub
Titel: Re: Makro auszuführen, deren Code-Zeilen in einer Zelle im Excel-Tabellenblatt steht
Beitrag von: Pergus am April 10, 2020, 14:56:48
Hallo Sebi,
vielen Dank für die prompte Antwort.

Ich denke, meine Erläuterung war nicht gut verständlich, sorry dafür.

Es sollte wie folgt sein:

Zeile     Spalte "B"                               Spalte "C"
   1       Name Makro-Subroutine          Code-Zeile/n
   2       ZelleAuswaehlenA1                  Worksheets("Tabelle1").Range("B3").Select
   3       ZelleAuswaehlenZ1S1              Worksheets("Tabelle1").Cells(3, 2).Select
   4       ZelleAuswaehlenName             Worksheets("Tabelle1").Range("Name").Select
... usw.

Ein Doppelklick auf Zelle "C2" erstellt quasi folgendes Makro:
Sub ZelleAuswaehlenA1()
    Worksheets("Tabelle1").Range("B3").Select
End Sub


Ein Doppelklick auf Zelle "C3" erstellt quasi folgendes Makro:
Sub ZelleAuswaehlenZ1S1()
    Worksheets("Tabelle1").Cells(3, 2).Select
End Sub


Ein Doppelklick hingegen auf Zelle "C4" erstellt quasi folgendes Makro:
Sub ZelleAuswaehlenName()
    Worksheets("Tabelle1").Range("Name").Select
End Sub


Eine Makro-Sub_Routine würde sich anhand der Angaben in den Zellen "B" und "C" sozusagen selbst erstellen.

Geht das?

Lg
Gustav
Titel: Re: Makro auszuführen, deren Code-Zeilen in einer Zelle im Excel-Tabellenblatt steht
Beitrag von: Sebi am April 10, 2020, 15:32:41
Hallo,

also du willste Makros also direkt zur Laufzeit anpassen können.
Ich habe dir mal etwas angehängt. Ich denke das sollte dein Problem machbar lösen.

Lieben gruß
Titel: Re: Makro auszuführen, deren Code-Zeilen in einer Zelle im Excel-Tabellenblatt steht
Beitrag von: PhilS am April 10, 2020, 15:36:32
Zitat von: Pergus am April 10, 2020, 14:56:48
Eine Makro-Sub_Routine würde sich anhand der Angaben in den Zellen "B" und "C" sozusagen selbst erstellen.

Geht das?
Ja, das geht grundsätzlich schon.
Siehe: Visual Basic Add-in Model (https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/visual-basic-add-in-model-reference).

Aber ich bin nicht überzeugt, dass das wirklich der richtige Ansatz für dein Problem ist (was immer das sein mag).

Titel: Re: Makro auszuführen, deren Code-Zeilen in einer Zelle im Excel-Tabellenblatt steht
Beitrag von: Sebi am April 10, 2020, 15:38:18
Vielleicht magst uns mal die Notwendigkeit erklären.
Ich denke dein Ansatz kann schicker gelöt werden.

Lieben Gruß
Titel: Re: Makro auszuführen, deren Code-Zeilen in einer Zelle im Excel-Tabellenblatt steht
Beitrag von: Pergus am April 10, 2020, 16:02:21
Danke Sebi und PhilS,

oje, ich glaube dass meine Idee wohl nicht gerade die Beste war  :o

Da ich mich nicht so oft mit VBA befasse und schnell Mal was vergesse, wollte ich mir ein "Merkzettel" basteln,
wo ich Befehle und Codezeilen in eine Tabelle eingeben und filtern kann um schneller die Codeschnipsel zu finden.
So muß ich nicht viel Zeit im Internet mit Suchen verschwenden.

Bin gerne Offen für Vorschläge, wie man so etwas realisieren kann  :)

Danke für Eure Hilfe!

Gustav

Titel: Re: Makro auszuführen, deren Code-Zeilen in einer Zelle im Excel-Tabellenblatt steht
Beitrag von: Sebi am April 10, 2020, 17:13:03
Dann nimm dir doch eine Exceltabelle und trag die dort ein.
Oder aber leg dir die in Module und kommentiere die sinnvoll.

Dann könntest darin suchen.
Titel: Re: Makro auszuführen, deren Code-Zeilen in einer Zelle im Excel-Tabellenblatt steht
Beitrag von: Pergus am April 10, 2020, 19:38:56
...wird wohl das Beste sein.

Jedenfalls nochmals vielen Dank Sebi