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

Frage zum Erstellen eines AddIns.

Frage zum Erstellen eines AddIns.
30.04.2014 15:20:56
Kasimir
Hallo an Alle!
Ich habe da mal eine Frage. Ich möchte ein AddIn erstellen. Nun möchte ich, erreichen, dass der VBA-Code im AddIn erstellt wird, der VBA-Code soll aber im aktiven Tabellenblatt wirken. Soweit ist das kein Problem. Allerdings möchte ich das „SelectionChange-Ereignis“ nutzen und da weiß ich nicht, ob das überhaupt geht. Es soll also im aktiven Tabellenblatt ein VBA-Code ausgelöst werden, wenn ich eine Zelle anwähle. Der VBA-Code dazu soll aber im AddIn stehen.
Der Grund dafür liegt darin, dass ich sehr viele Dateien habe, in dem der VBA-Code wirken soll. Wenn ich nun in jeder Datei diesen Code eintrage und dann mal eine Änderung machen muss, so muss ich dies dann in allen Dateien machen. Ich wollte das einfach halten und immer nur die Änderung im AddIn machen.
Daher die Frage: Geht das was ich mir vorstelle und wenn ja wie?
Danke Euch
Kasimir

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

Betreff
Datum
Anwender
Anzeige
AW: Frage zum Erstellen eines AddIns.
30.04.2014 15:34:21
Kasimir
Hallo Hajo!
Danke Dir für Deine Antwort. In dem Beitrag geht es um ein Workbook_Open-Ereignis. Wie mache ich das nun wenn mein VBA-Code im Workbook_SheetSelectionChange-Ereignis steht? Sorry, dass ich frage, aber ich habe mit meinen mageren Kenntnissen noch nie mit einer Klasse gearbeitet.
Danke und Gruß,
Kasimir

Es geht doch um Ereignisreaktion aus1em AddIn, ...
30.04.2014 15:52:57
Luc:-?
…Kasimir;
dann musst du in dem die Ereignisse des Application-Objekts aktivieren — das Wie wird in der VBE-Hilfe erläutert. Dir stehen dann im _SelectionChange-EreignisprozedurKopf 2 weitere Variablen zV, die das Ereignis auf das auslösende Workbook nebst Worksheet eingrenzen. Die kannst du abfragen und so die Ereignisreaktion auf die relevanten Mappen/Blätter beschränken.
Gruß Luc :-?

Anzeige
AW: Es geht doch um Ereignisreaktion aus1em AddIn, ...
30.04.2014 16:02:15
Kasimir
Hallo Luc!
Danke auch Dir für Deine Antwort. Aber bei der verstehe ich noch weniger was ich machen muss/ soll als bei der Antwort von Hajo.
Gruß,
Kasimir

AW: Frage zum Erstellen eines AddIns.
30.04.2014 16:35:28
Rudi
Hallo,
Wie mache ich das nun wenn mein VBA-Code im Workbook_SheetSelectionChange-Ereignis steht?
dann heißt das in der Klasse myApp_SheetSelectionChange
Im Klassenmodul kannst du oben rechts das Objekt auswählen und oben links das Event.
Gruß
Rudi

AW: Frage zum Erstellen eines AddIns.
30.04.2014 16:44:48
Kasimir
Hallo Rudi!
Danke Dir für Deine Antwort. Das habe ich nun verstanden und es funktioniert. Nochmals Danke an alle, Die mir hier geholfen haben.
Noch einen schönen Abend,
Kasimir

Anzeige
AW: Frage zum Erstellen eines AddIns.
30.04.2014 17:28:42
Tino
Hallo,
Du musst im Addin eine Klasse mit dem entsprechenden Event erstellen und
dies bei bestimmten Dateien dann initialisieren.
Im Beispiel wird diese beim aktivieren oder öffnen der Datei Mappe1.xls initialisiert.
Vereinfachtes Beispiel ins Add-In:
kommt als Code in DieseArbeitsmappe
Option Explicit 
 
Dim clsExcelEvent As Klasse1 
 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    Set clsExcelEvent = Nothing 
End Sub 
 
Private Sub Workbook_Open() 
    Set clsExcelEvent = New Klasse1 
    Set clsExcelEvent.EventWB = Application 
End Sub 
 
kommt als Code in Klasse1
Option Explicit 
 
Dim WithEvents ExcelWithEvents As Application 
Public WithEvents EventWB As Application 
 
Private Sub EventWB_WorkbookActivate(ByVal Wb As Workbook) 
'nur in dieser Datei 
If Wb.Name = "Mappe1.xls" Then Set ExcelWithEvents = Application 
End Sub 
 
Private Sub EventWB_WorkbookDeactivate(ByVal Wb As Workbook) 
Set ExcelWithEvents = Nothing 
End Sub 
 
Private Sub ExcelWithEvents_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
'nur auf dieser Tabelle 
If Sh.Name = "Tabelle1" Then 
    'nur in diesen Zellbereich 
    If Not Intersect(Sh.Range("A1:C5"), Target) Is Nothing Then 
        'Event aus - sonst erfolgt neuer Aufruf bei Änderung in Zelle 
        Application.EnableEvents = False 
            MsgBox Target.Address 'hier die Aktion 
        Application.EnableEvents = True 
    End If 
End If 
End Sub 
Gruß Tino
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige