Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Datei doppelt in VBA-Ansicht!
#1
Hallo liebe Excelgemeinde,


ich habe eine Frage an die Experten! :)

Hat jemand eine Idee, wieso manche Dateien .xlsm manchmal in VBA-Editor doppelt erscheinen? Ich schließe die betroffenen Datei und trotzdem ist diese noch einmal in VBA-Editor als geöffnet angezeigt?
Wenn das Passiert, dann funktionieren z.B. die Worksheet_Change- Ereigniss nicht mehr!

Woran kann das liegen und wie kann ich das abstellen?


Danke
VG
Alexandra
Antworten Top
#2
Hallo Alexandra,

hast Du eventuell
- codeverweise auf die Datei
- Application.OnTime in der Datei laufen
- ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Hallo Andre,


nein keine Codeverweis und auch nicht Application.OnTime!
Das kommt auch nur manchmal vor so, dass ich es auch nicht rekonstruieren kann!

VG
Alexandra
Antworten Top
#4
Ich kann so etwas wie folgt rekonstruieren
Zitat:Option Explicit
Dim wb As Excel.Workbook

Sub TesterA()
    
    Set wb = Workbooks.Open("Datei.xlsm")
    wb.Close False
End Sub
Da ist zwar klar, wo der Fehler liegt, aber meistens ist so ein Programmierfehler in diese Richtung die Ursache
Antworten Top
#5
Hast du schon gekuckt : Menüliste / View / unhide

Man kann eine Datei 'unsichtbar' öffnen, z.B so:

Code:
GetObject "G:\OF\beispeil.xlsx"

oder unsichtbar machen:

Code:
Sub M_snb()
    ThisWorkbook.IsAddin = Not ThisWorkbook.IsAddin
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#6
(08.09.2017, 14:57)Storax schrieb: Ich kann so etwas wie folgt rekonstruieren
Da ist zwar klar, wo der Fehler liegt, aber meistens ist so ein Programmierfehler in diese Richtung die Ursache

Das ist eines der wirklich interessanten Beispiele warum entsetten wichtig sein kann.

Wird die Objektvariable in der Prozedur deklariert, wird sie automatisch entsettet.
Ist es aber im Modul dann

Option Explicit
Dim wb As Workbook

Sub safda()
Set wb = Workbooks.Add
wb.Close False
set wb = nothing
End Sub

Ist das entsetten wichtig. (Gehört sich auch, aufzuräumen)
Interessant ist auch, das halt in VBA das Projekt sehr lange lebt obwohl es ja abgearbeitet ist.
Denn sonst müsste auch die Modul Variable automatisch im Abfall landen.

Tolles Beispiel Storax!
Gruß Jeanie
[-] Folgende(r) 1 Nutzer sagt Danke an Jeanie für diesen Beitrag:
  • Storax
Antworten Top
#7
Danke fürs Lob.

"Entsetten" ist nicht nötig, wenn der Scope lokal ist, wie Du auch schon geschrieben hast.
Aber natürlich wichtig und richtig für mein Beispiel. Da sollte man das machen!

Hier aber ein Beispiel bzw. ein Link,  wo das "Entsetten" nichts bringt. Da musst Du anders aufräumen.
Antworten Top
#8
Der Link ist ganz interessant aber auch inhaltlich nicht ganz neu.
Ein VBA Projekt ist nunmal etwas anderes als eine "echte" Anwendung.
Und das Beispiel dort ist sehr gekünstelt.
Anständige Programmierer würden sowas eh nicht tun.
Und globale oder Modulweite Objektvariablen (die man mal aus Faulheit benutzt) müssen halt sauber entsorgt werden.

Vor vielen vielen Jahren gab es schon in VB6 einen großen Streit, wann Variablen wie entsorgt werden und die meisten meinten sogar, dass man Prozedurvariablen entsetten muss. Aber wie gesagt, dass ist schon lange gefühlte 100000 Jahre her.

Aber alte VB Progger räumen fast standardmäßig hinter sich auf Smile
Gruß Jeanie
Antworten Top
#9
So gesehen ist mein Beispiel auch etwas künstlich, aber Objekt Variabeln auf Nothing setzen ist i.a. nicht nötig.
Hier jemand mit mehr Autorität als ich zu dem Thema.
Antworten Top
#10
(08.09.2017, 19:03)Storax schrieb: So gesehen ist mein Beispiel auch etwas künstlich, aber Objekt Variabeln auf Nothing setzen ist i.a. nicht nötig.

Dem widerspreche ich aus Vorsicht für angehende Weltmeisterprogrammierer.
Es gibt unendlich viele Situationen in welchen das entsetten ganz wichtig ist (auch unendlich viele wo nicht)
Das hat nicht immer mit Garbage etwas zu tun sondern auch mit Programmlogik : Check auf nothing.

Aber ich denke, dass jetzt dieser Thread überbeansprucht ist.
Ein schönes Wochenende noch!
Gruß Jeanie
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste