ich habe gestern durch die freundliche Hilfe eines Forum-Mitglieds einen VBA-Code bekommen, der die Excel Application beim starten einer bestimmten Tabelle auf eine feste Größe (Beispiel 400x400 Pixel) minimiert. Zur besseren Veranschaulichung meines Problems hier erst mal der Code
-------------------------------------------------------------------
Code in das Modul von "DieseArbeitsmappe":
Option Explicit
Private Sub Workbook_Activate()
With Application
.WindowState = xlNormal
.Width = 400
.Height = 400
.DisplayStatusBar = False
.DisplayFormulaBar = False
.DisplayScrollBars = False
.Left = 100
.Top = 10
End With
Call alle_aus
End Sub
Private Sub Workbook_Deactivate()
Call alle_ein
End Sub
Code in ein Standardmodul:
Option Explicit
Option Private Module
Sub alle_aus()
Dim cb As CommandBar
For Each cb In CommandBars
If cb.Type 2 Then cb.Enabled = False
Next
End Sub
Sub alle_ein()
Dim cb As CommandBar
For Each cb In CommandBars
cb.Enabled = True
Next
End Sub
---------------------------------------------------------------------
Der Code funktioniert wunderbar beim Starten. Mein Problem ist nun folgendes:
Der VBA-Code im ersten Modul
Private Sub Workbook_Deactivate()
Call alle_ein
End Sub
sieht für mich aus, als wäre das die Anweisung, beim schließen der Arbeitsmappe alle Änderungen (Größe, Weglassen der Menüs...) wieder Rückgänging zu machen. Da ich Makros im Moment nur mit dem Recorder schreiben kann, kenne ich mich leider nicht so aus. Ist für mich aber eine logische Schlußfolgerung.
So, wenn ich nun die Tabelle (demnach auch das ganze Programm) schließe, dann treten eben diese rückgängigen Änderungen leider nicht in Kraft. Öffne ich nach dem Schließen eine ganz andere (normale) Tabelle, so öffnet sich Excel in der Größe 400x400 Pixel und es fehlen die Arbeitsmappenregister + Scrollbalken. Maximiert man die Tabelle dann, so ist der Vertikale Scrollbalken plötzlich "in der Mitte" der Tabelle - quasi an der Stelle, wo die 400 Pixel zu Ende waren.
Also scheint die Anweisung aus dem ersten Modul nicht so richtig zu sein. Oder habe ich was falsch gemacht? Gibt es noch einen zusätzlichen VBA-Code, der das umgeht, das Excel diesen Fehler macht?
Ihr könnt den Code ja mal ausprobieren, um zu sehen, was ich meine.
Wie immer vielen Dank vorab für Eure Hilfe. :-)
Gruß
Rico