Oktober 22, 2020, 10:34:08

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Makro auszuführen, deren Code-Zeilen in einer Zelle im Excel-Tabellenblatt steht

Begonnen von Pergus, April 10, 2020, 13:28:01

⏪ vorheriges - nächstes ⏩

Pergus

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
Win7, Office Professional 2010

Sebi

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
Liebe Grüße Sebi

Pergus

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
Win7, Office Professional 2010

Sebi

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ß
Liebe Grüße Sebi

PhilS

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.

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

Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

Sebi

Vielleicht magst uns mal die Notwendigkeit erklären.
Ich denke dein Ansatz kann schicker gelöt werden.

Lieben Gruß
Liebe Grüße Sebi

Pergus

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

Win7, Office Professional 2010

Sebi

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.
Liebe Grüße Sebi

Pergus

Win7, Office Professional 2010