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

In Zelle per VBA ausführen

In Zelle per VBA ausführen
08.04.2014 21:43:47
Sabrina
Hallo Leute,
ich habe im Tabellenblatt folgenden Code der ausgeführt wird wenn sich in Zelle G2 was ändert/aktiviert wird
If Target.Address = "$G$2" Then
End if
Nun muss ich am Ende eines andren Makros dafür sorgen dass der Code ausgeführt wird.
wie kann ich das machen?
Range("G2").Activate 
funktioniert nicht :(
Gruß
Sabrina

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In Zelle per VBA ausführen
08.04.2014 22:20:07
Sheldon
Hi Sabrina,
der Code wird stets ausgeführt, wenn der Inhalt von Zelle G2 geändert wurde. Falls Der Code nun am Ende eines anderen Makros auch ausgeführt werden soll, obwohl sich der Inhalt von Zelle G2 nicht geändert hat, dann mach es so:
Der Code zwischen dem If Target.Address [...] und End If muss in ein eigenes Makro in einem Modul. Falls Du keines hast, leg ein neues an. Darin nennst du das Makro dann z. B.:
Sub G2_Makro
[Deinen Code einfügen]
End Sub
Und zwischen das If Target.Address [...] und End If aus dem Tabellenblatt-Change Ereignis schreibst Du nun einfach den folgenden Befehl:
G2_Makro
weil Du so ja das Makro im Modul genannt hast. Falls nicht, als Befehl also deinen eigenen Makronamen eintragen.
Dieses Makro kannst Du nun auch von jedem anderen Makro aus aufrufen, also eben auch am Ende deines anderen Makros einfach wieder
G2_Makro
eintragen.
Gruß
Sheldon

Anzeige
Das ist nicht notwendig, ...
09.04.2014 04:13:46
Luc:-?
…eine Ereignisprozedur kann auch (fast) ganz normal aufgerufen wdn, Sabrina (& Sheldon),
nur wird das (wg Private) nicht o.w. gelingen. Man muss im Modul der EreignisProz eine Public-Prozedur anlegen, die den AufrufBefehl für die EreignisProz enthält. Dabei sollte auch Target übergeben wdn (könnte auch voreingestellter DefaultWert sein oder von deinem anderen Makro durchgereicht wdn). Diese RufProz kann man dann aus einem beliebigen Modul heraus aufrufen. Dabei den ModulNamen nicht vergessen, also zB Call Tab1.RufChange(zielzelle); in RufChange steht dann bspw Call Worksheet_Change(zielzelle).
Morrn, Luc :-?

Anzeige
Wir werden wohl nicht erfahren…
09.04.2014 09:36:48
Sheldon
Moin Luc,
…ob diese Hinweise hilfreich waren. Wenn ich davon ausgehe, dass dieser Post von derselben Sabrina ist, dann hält sie nichts von Rückmeldungen.
Ich für meinen Teil danke für deinen Hinweis. Ich wollte es wg. der Basiskenntnisse so einfach erklären, wie es mir eben einfiel und bin mir nun auch nicht sicher, ob wir die gute Sabrina nicht etwas überfordern mit dem Private Schlüsselwort und den unterschiedlichen Modulen. Auf jeden Fall hab ich es nicht richtig erklärt, denn es ist ja möglich ein Makro aufzurufen.
Gruß
Sheldon

Ja, und Tino hat sich von deiner Warnung …
09.04.2014 16:26:39
deiner
…nicht abschrecken lassen, Sheldon,
und noch die Run-Variante draufgepackt, was idR auch fktt sollte/könnte, nur habe ich das bisher nicht ausprobiert, während ich das, was ich vorschlug, schon mal angewendet hatte.
Übrigens implizieren diese Bspp unter Anwendung von InternNamen dringend, diese bei häufigem VBA-Einsatz zu ändern, was ich mit Tab1. andeuten wollte. Die Variante mit dem StandardInternNamen könnte bei mehreren offenen Dateien, zumindest, wenn (unwahrscheinlicherweise) die falsche aktiv sein sollte und ebenfalls ein so benanntes Blatt mit einer solchen EreignisProz enthalten würde, unerwünschte Wirkung haben. Auf der sicheren Seite wäre man wohl, wenn man diese InternNamen neu und systematisch festlegt, denn sie sind ja bekanntlich nicht durch das Workbook-Objekt eingrenzbar.
Tja, und solchen Leuten wie Sabrina sollte man wohl nicht mehr antworten, zumindest dann nicht, wenn sie keine eMail-Benachrichtigung gewählt haben… ;-]
Gruß Luc :-?

Anzeige
Run-Methode
09.04.2014 17:13:16
Tino
Hallo,
wenn man mit der Run Methode auf andere Arbeitsmappen zugreifen möchte,
muss dies explicit mit angegeben werden sonst läuft der Code auf einen Fehler
wenn dieser Code sich nicht in DieserArbeitsmappe befindet.
Allerdings muss man wissen, wenn die Datei als Datei-Name im gleichen Ordner oder
als kompl. Pfad angesprochen wird und diese geschlossen ist, wird diese geöffnet!
Ist dann dieser Code nicht verfügbar kommt es erst nach dem Öffnen zum Fehler.
Also diese Variante nur mit bedacht anwenden!
Beispiel:
Application.Run "'Mappe2. xlsm'!Tabelle1.Worksheet_SelectionChange", Tabelle1.Range("$G$2")

Oder auch
Application.Run "'C:\Mappe2.xlsm'!Tabelle1.Worksheet_SelectionChange", Tabelle1.Range("$G$2")
Zu beachten sind die Hochkommas die Datei angeben.
Gruß Tino

Anzeige
die Gratwanderung
09.04.2014 22:49:39
Sheldon
Hallo Luc,
meine 'Warnung' soll ja niemals jemanden davon abhalten, eine sinnvolle Antwort beizusteuern! Ich wollte lediglich darauf hinweisen, wie hilfreich für die Helfer eine Antwort ist.
Den Zeitangaben an deinen Beiträgen entnehme ich, dass die letzten Gedanken vorm Einschlafen und offenbar auch die ersten nach dem Aufwachen diesem Thread hier galten! Ich bin selbst auch manchmal gerne spät im Web unterwegs, aber ob ich nach Vier Uhr morgens noch in der Lage wäre, einen erhellenden Beitrag fürs Forum zu verfassen…? Falls ich denn überhaupt in der Lage dazu bin ;-)
Gruß
Sheldon

Anzeige
AW: In Zelle per VBA ausführen
09.04.2014 11:26:49
Tino
Hallo,
z. Bsp. in Tabelle1 steht.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$G$2" Then
MsgBox Target.Address(External:=True)
End If
End Sub
Und in Deinem anderen Makro dann so.
Sub Beispiel()
Application.Run "Tabelle1.Worksheet_SelectionChange", Tabelle1.Range("$G$2")
End Sub
Gruß Tino

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige