Anzeige
Archiv - Navigation
1420to1424
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

Worksheet_Change

Worksheet_Change
22.04.2015 15:36:54
Woldeh
Hallo,
wie kann ich das Ereignis "Worksheet_Change" mittels Makro auslösen?
Der Code steht in meinem Arbeitsblatt "PLANUNG", aber mir ist die Syntax nicht klar:
Call sheets("Planung")_change ($A$5) ?
Vielen Dank für eure Hilfe!
Woldeh

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Change
22.04.2015 15:42:14
selli
hallo woldeh,
was willst du damit bezwecken?
($A$5)
was steht denn im change-ereignis?
was willst du erreichen?
gruß
selli

AW: Worksheet_Change
22.04.2015 15:43:47
Nepumuk
Hallo,
Du musst aus der Private Sub Worksheet_Change eine Public Sub machen und dann geht es so:
Call Worksheets("Planung").Worksheet_Change(Range("A5"))

Gruß
Nepumuk

Geht das tatsächlich in irgendeiner XlVersion, ...
22.04.2015 20:14:47
Luc:-?
Nepumuk?
Bei mir fktioniert das erwartungsgemäß weder unter Xl14/2010 noch unter Xl12/2007! Das geht in diesen Versionen nur mit dem CodeName des Blattes.
Du musst aber auch gar nichts an der EreignisProzedur ändern, Woldeh,
sondern musst nur eine Public-Rufprozedur zusätzlich ins KlassenModul der EreignisProz setzen:
Public Sub RufWshChange(Ziel As Range): Call Worksheet_Change(Ziel): End Sub
In ein normales Modul käme dann der Aufruf von RufWshChange mit ParameterÜbergabe für Ziel, hier Range("A5").
Allerdings hast du dann das gleiche Problem mit dem CodeName. Es geht nur damit oder du verwendest CallByName, wobei du dann entscheiden kannst, ob die RufProz oder gleich die auf Public gesetzte EreignisProz aufgerufen wdn soll. Hier mal die entsprd Zeile mit der RufProz:
CallByName Worksheets("Planung"), "RufWshChange", vbMethod, Range("A5")
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: Geht das tatsächlich in irgendeiner XlVersion, ...
22.04.2015 20:39:20
Uduuh
Hallo Luc,
geht sowohl in 2003 als auch in 2013
Gruß aus’m Pott
Udo

Zu 2003 kann ich nicht's sagen, ...
22.04.2015 22:43:16
Luc:-?
…Udo,
hab' ich nicht mehr, und in den beiden nächsten geht's nicht, warum auch immer…
Gruß, Luc :-?

geht auch in 2007
23.04.2015 10:12:11
Rudi
Hallo,
nur, wie schon gesagt, darf die Ereignisprozedur nicht Private sein.
Sub aaa()
Worksheets(1).Worksheet_Change Range("A1")
'oder
Call Worksheets(1).Worksheet_Change(Range("b1"))
End Sub
Sub Worksheet_Change(ByVal Target As Range)
MsgBox Target.Address
End Sub
Gruß
Rudi

Anzeige
Bei mir nicht, viell habt ihr eine aktuellere ...
23.04.2015 17:30:39
Luc:-?
…xlVBA-Version drauf, Rudi… :-[
Vertippt habe ich mich jedenfalls nicht. Xl14 sollte bei mir auch aktuell sein, aber evtl habe ich mich mit dem Intellisense zufrieden gegeben, nachdem der auch zu einem extra angelegten Wsh-Objekt das nicht zeigen wollte…
Gruß, Luc :-?

Das geht tatsächlich in xl2013
22.04.2015 20:45:26
Nepumuk
Hallo Luc,
ich kann das natürlich nur unter xl2013 testen aus einem Standardmodul kann ich die öffentliche Methode so aufrufen. Auch aus einer anderen Klasse heraus funktioniert es problemlos.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Public Sub Worksheet_Change(ByVal Target As Range)
    MsgBox Target.Address
End Sub

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Sub Test()
    Call Worksheets("Tabelle1").Worksheet_Change(Range("A5"))
End Sub

Gruß
Nepumuk

Anzeige
Unter Xl12/Xl14 streikt schon die VBE-Syntax-...
22.04.2015 22:41:00
Luc:-?
…Überprüfung, Nepumuk,
keine zulässige Methode o.s.ä. Allerdings fktioniert's mit CallByName, was ja auch kein anderes Objekt verwendet. Folglich wird's wohl an der VBA- bzw VBE-Version liegen. Muss man dann halt damit leben (die unausgereiften höheren Xl-Versionen schaffe ich mir deshalb nicht an)…
Gruß, Luc :-?

AW: und in 2010 gehts auch, ...
22.04.2015 21:20:14
Daniel
Sollte es irgendwo nicht funktionieren, dann kann man auch einfach
den benötigten Code in ein allgemeines Modul schreiben, mit dem Zellbereich als Übergabeparamter.
Dann kann man ihn von jeder Stelle aus aufrufen, sei es vom Change-Eventmakro aus mit der Übergabe von Target oder mit Application.Run von einer anderen Datei aus.
Gruß Daniel

Anzeige
2010 hatte ich getestet => Syntax-Fehler! orT
22.04.2015 22:45:27
Luc:-?
Gruß, Luc :-?

orT ?
22.04.2015 23:46:47
Daniel
oT für "ohne Text" oder owT für "ohne weiteren Text" sind mir als Abkürzung bekannt.
Aber für was steht das orT?
Gruß Daniel

AW: orT !!!
23.04.2015 06:02:52
hary
Moin Daniel
ohne relevanten Text. ;-)
gruss hary

AW: 2010 hatte ich getestet => Syntax-Fehler! orT
23.04.2015 08:17:38
Daniel
Hi
bei Syntaxfehler wirst du dich vertippt haben.
Der Aufruf des Change-Events aus einem Makro im allgemeinen Modul funktioniert in 2013 und 2010 sowohl mit dem Indexnamen als auch mit dem Codenamen.
Er funktioniert sogar aus einer anderen Mappe heraus.
allerdings funktioniert die Intellisense nur bei Verwendung des Codenames, bei Verwendung des Indexnamens musst du den vollständigen Makronamen selber hinschreiben, da kannst du dann nichts abkürzen.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige