Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Alle Ereignisse unter DieseArbeitsmappe | Herbers Excel-Forum


Betrifft: Alle Ereignisse unter DieseArbeitsmappe von: Franz D.
Geschrieben am: 04.12.2009 16:21:53

Hallo Profis,
wenn ich sämtliche "Selection_Change"-Codes udgl. in "DieseArbeitsmappe" auslagern würde, bekäme ich dadurch ein Performance-Gewinn sprich Tempo? Sind Vorteile oder Nachteile bekannt?
Grüße
Franz D.

  

Betrifft: AW: Alle Ereignisse unter DieseArbeitsmappe von: JogyB
Geschrieben am: 04.12.2009 16:33:29

Hi.

Ich würde eher einen Performance-Nachteil erwarten, da Du noch weitere Prüfroutinen brauchst, um sicherzustellen, dass der Code auch zum Tabellenblatt paßt. Und zudem setzen Zellbezüge eine Ebene höher an, was beim Zugriff etwas Zeit kosten könnte.

Ansonsten sehe ich nicht, wieso die Ausführungsgeschwindigkeit vom Speicherort des Codes abhängen sollte.

Gruss, Jogy


  

Betrifft: AW: Alle Ereignisse unter DieseArbeitsmappe von: Franz D.
Geschrieben am: 04.12.2009 16:51:54

Hallo und Danke Jogy!
Wie beim Millionär, würde ich mich gerne noch absichern mit andere(n) Meinung(en). Ich hoffe du hast dafür Verständnis.
Gruß
Franz D.


  

Betrifft: Alle Ereignis-Makros unter DieseArbeitsmappe von: fcs
Geschrieben am: 04.12.2009 16:59:28

Hallo Franz D.,

Die Sheet-Ereignis-Makros unter DieseArbeitsmappe sollte man dann verwenden, wenn in vielen/allen Blättern die gleichen Ereignisse überwacht und Aktionen ausgeführt werden sollen.

Tempo-Gewinn erzielt man keinen.
Da ja ggf. zusätzliche Prüfungen eingebaut werden müssen, um die Aktionen in bestimmten Blättern zusteuern, dürfte die Ausführung der Makros geringfügig (aber kaum spürbar) langsamer sein.

Vorteile:
Hauptvorteil ist natürlich, dass man für gleiche Aktionen in mehreren Blätter die Prozeduren zentral an einer Stelle verwalten und pflegen kann.

Man kann ggf. Tabellenblätter in eine externe Mappe kopieren, die keinen VBA-Code beinhalten, in ihrer Ursprungsmappe aber mit VBA-Unterstützung bearbeitet werden. Dies ist zumindest für Excel 2003 noch relevant, Excel 2007 ermöglicht ja standardmäßig das Speichern ohne Code.

Nachteile:
Man muss beim Programmieren darauf achten, dass die Aktionen in den richtigen Blättern erfolgen. Das kann man aber leicht mit Select Case-Anweisungen steuern.

Außerdem gilt zu beachten, dass Prozeduren, die im Tabellenblatt-Modul definiert sind immer vor den entsprechenden Prozeduren unter DieseArbeitsmappe ausgeführt werden.

Gruß
Franz


  

Betrifft: AW: Alle Ereignis-Makros unter DieseArbeitsmappe von: Franz D.
Geschrieben am: 04.12.2009 17:34:22

Von Franz zu franz,
Zitat:"Außerdem gilt ... vor den entsprechenden Prozeduren ...ausgeführt werden."
Heisst das dass ich ein "Selection-Change" sowohl als auch (identisch dann noch?) in einem Blatt und zusätzlich unter "DieseArbeitsmappe" platzieren kann? Würde ich natürlich nicht tun, Redundanz ist kontra-produktiv, würde nur wissen ob Vba dies zulässt.
Gruß
Franz D.


  

Betrifft: AW: Alle Ereignis-Makros unter DieseArbeitsmappe von: fcs
Geschrieben am: 04.12.2009 17:48:09

Hallo Franz,

ja die sequenzielle Folge der beiden Prozeduren ist möglich.
Probiere einfach mal die folgeden beiden Prozeduren.

Gruß
Franz

'Prozedur im Tabellenmodul von Tabelle1
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = "$B$2" Then
    MsgBox " Ich bin das Worksheet-Selektion_Ereignis für Zelle B2"
  End If
End Sub

'Prozedur unter DieseArbeitsmappe
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  Select Case Sh.Name
  Case "Tabelle1"
    If Target.Address = "$B$2" Then
      MsgBox " Ich bin das Sheet-Selection_Ereignis unter diese Arbeitsmappe für B2"
    End If
  Case Else
  
  End Select
End Sub



  

Betrifft: AW: Alle Ereignis-Makros unter DieseArbeitsmappe von: Franz D.
Geschrieben am: 04.12.2009 17:53:36

Hallo Franz!
Na sowas! Nach dem Motto "Doppelt genäht hebt besser". Herzlichen Dank für die Lehrstunde.
Tschüss!
Franz D.


  

Betrifft: Das ist noch nicht alles! Es gibt noch 'ne 3.! orT von: Luc:-?
Geschrieben am: 04.12.2009 21:34:01

Gruß Luc :-?


  

Betrifft: Hallo Luc, es gibt noch 'ne 3. und wie sieht... von: Andre´
Geschrieben am: 04.12.2009 21:58:37

diese aus?

MFG Andre


  

Betrifft: Im Prinzip genauso, aber dazu musst du... von: Luc:-?
Geschrieben am: 05.12.2009 01:20:57

...ein Klassenmodul für die Ereignisse des Application-Objekts anlegen, Andre.
Die sind vorhanden, aber normalerweise nicht so voreingestellt. Wenn du aber alles so machst wie in der VBE-Hilfe beschrieben, kannst du die Ereignisprozz auch im rechten Fenster finden. Die haben dann allerdings noch eine Variable mehr Wb As Workbook...
Wenn man das in ein AddIn steckt, kann man damit interessante Effekte erzielen; bspw Auswahlverhinderung von Zellen in ungeschützten Blättern...
Gruß Luc :-?

Besser informiert mit...


  

Betrifft: Danke:-) von: Andre´
Geschrieben am: 05.12.2009 22:47:31

Hallo Luc,
danke für den Hinweis, habe alles erfolgreich umsetzen können.

MFG Andre


  

Betrifft: Re: Bitte! Viel Spaß! ;-) Gruß owT von: Luc:-?
Geschrieben am: 06.12.2009 02:18:54

:-?


Beiträge aus den Excel-Beispielen zum Thema "Alle Ereignisse unter DieseArbeitsmappe"