Hallo tester,
ich nutze sehr häufig die Detektivfunktion „Spur zum
Vorgänger“, um mir schnell einen Überblick über Verweise auf
andere Zellen in meinen Formeln zu verschaffen.
ich habe das mal benutzt, die Pfeile innerhalb des Blattes sind klar, aber wenn es zu einem anderen Blatt führt erscheint nur ein Symbol. Wie kriege ich heraus welches andere Blatt gemeint ist? Danke
Um nicht in jeder Zelle erneut die Schaltfläche in der
Symbolleiste betätigen zu müssen, war meine Idee, die Funktion
bei jeder Zellmarkierung per VBA auszulösen (auf
Worksheet_SelectionChange-Ereignis reagieren).
Dumm ist allerdings, dass man den Code für jedes
Tabellenblatt, in dem man die Funktion nutzen möchte
wiederholen muß.
Ich würde gerne den „Autodetektiv“ in die „personl.xls“
integrieren, so dass die Funkionalität für alle geöffneten
Arbeitsmappen zur Verfügung steht.
Nur mein Problem dabei ist, wie kann ich das Ereignis
„Worksheet_SelectionChange“ jedes Tabellenblattes der
geöffneten Arbeitsmappen in der externen Datei „personl.xls“
abfangen und entsprechend darauf reagieren.
Schreibe den Code doch in „Diese Arbeitsmappe“ und nimm
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
End Sub
Mit Klassenmodulen müsste da doch was zu machen sein.
Kann mir jemand Tips zur Umsetzung geben?
Nachfolgend ist meine personl.xls. Sie setzt in jeder geöffneten Datei den Verweis auf MX Forms2.0 weil ich en Verweis in jeder Datei brauche damit mein Makro was Tabellenbereiche für Beiträge hier formatiert nicht funktioniert, weiß grad nicht wegen was für einem Befehl, jedenfalls braucht der den Verweis auf Forms 2.0.
Weiterhin wird in jeder Datei die Berechnung auf automatisch gestellt, weil warum auch immer , die Berechnung gelegentlich auf manuell stand.
Bitte keine Rückfragen zum Klassenmodul an sich, hat mir jemand gebastelt, ich kenne mich da nicht aus.
Mit dem Code kannst du sicher erreichen dass in jeder Datei in Dieser Arbeitsmappe dann
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
End Sub
enthalten ist. Problem ist, wenn schon Workbook_SheetSelectionChange vorhanden ist, wird es schwierig zu entscheiden wo im Code eingefügt werden soll, könnten ja If Abfragen usw am Anfang stehen usw.
Weiteres Problem könnte sein, (ein paar Threads tiefer, mit dem Betreff „…Fortschrittsanzeige“, die beiden obersten Postings von mir), dass man zwar zur Laufzeit Code eintragen kann, dass dieser aber nicht kompiliert wird.
In der dortigen Datei trage ich zwar Code im Codebereich von Tabelle2 ein, aber er wird erst wirksam wenn ich manuell kurz in den Entwurfsmodus und zurück gehe. Ich mutmaße en Problem der „late binding“ aber das ist nur ein Wort für mich.
Bei eingebauten Ereignisprozeduren wie Workbook_SheetSelectionChange kann evtl. dieses Problem nicht auftreten. Rückmeldung bzw. funktionierender Code für die personal.xls wäre sehr nett.
Beim nachfolgenden Code ist es wichtig dass das Klassenmodul exakt so benannt wird.
Gruß
Reinhard
Diese Arbeitsmappe:
Option Explicit
Private objApplication As clsApplication
Private Sub Workbook\_Open()
'Application.Caption = "Reinhard"
Set objApplication = New clsApplication
Set objApplication.prpApplication = Application
End Sub
Klassenodul: clsApplication
Option Explicit
Private WithEvents mobjApplication As Application
Public Property Set prpApplication(objApplication As Application)
Set mobjApplication = objApplication
End Property
Private Sub mobjApplication\_NewWorkbook(ByVal Wb As Workbook)
Call prcAddReverence(Wb)
End Sub
Private Sub mobjApplication\_WorkbookOpen(ByVal Wb As Workbook)
Call prcAddReverence(Wb)
End Sub
Modul1:
Option Explicit
Private Const FM20\_GUID = "{0D452EE1-E08F-101A-852E-02608C4D0BB4}"
Public Sub prcAddReverence(objWorkbook As Workbook)
Dim intIndex As Integer
Dim blnFound As Boolean
On Error GoTo err\_exit
With objWorkbook.VBProject.References
For intIndex = 1 To .Count
If .Item(intIndex).GUID = FM20\_GUID Then
If .Item(intIndex).IsBroken Then
.Remove .Item(intIndex)
Else
blnFound = True
End If
End If
Next
If Not blnFound Then \_
.AddFromGuid GUID:=FM20\_GUID, Major:=2, Minor:=0
End With
objWorkbook.Application.Calculation = xlCalculationAutomatic
Exit Sub
err\_exit:
MsgBox "Fehler " & CStr(Err.Number) & vbLf & \_
vbLf & Err.Description, vbCritical, "Fehler"
End Sub