Clever-Excel-Forum

Normale Version: Automatisch die aktuele Fenstergröße in Tabelle abspeichern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen.

Ich möchte gerne, dass für jede Tabelle die gerade eingestellte Fenstergröße mit abgespeichert wird und nach dem Laden wieder genau so angezeigt wird.
Der Tipp die STRG-Taste beim Speichern zu drücken, funktioniert leider nur als generelle Lösung für alle Tabellen.
Gibt es hierfür einen Trick/VBA??

Vielen Dank für eine Antwort.

Herbstliche Grüße aus dem Schwabenland
Hallöchen,

die Tabellen in einer Mappe sind doch nicht unterschiedlich groß !?
(04.11.2014, 18:11)schauan schrieb: [ -> ]die Tabellen in einer Mappe sind doch nicht unterschiedlich groß !?

aber vielleicht die Zoom-Einstellung?
Hallo Ralf,

oder es sind Mappen gemeint und nicht Tabellen ...
Guten Morgen

Hier habe ich mich falsch ausgedrückt.
Ich meinte komplette Mappen mit mehreren Tabellenblättern.

Danke
Hallo Hermann,

hier eine Variante, in der die Persönliche Arbeitsmappe verwendet wird.
Darin muss ein Klassenmodul und ein normales Modul eingefügt werden.
Solltest Du noch keine Pers.Arbeitsmappe haben, zeichne einfach ein
Makro auf und gib als Speicherort die P.A. an. Die Aufzeichnung kannst
Du dann sofort wieder beenden. Dann hast Du auch schon ein allgemeines
Modul drin. Damit es dann auch klappt, muss Excel komplett beendet werden.
Die Fensterangaben werden dann jeweils in der entsprechenden Arbeitsmappe
unter benutzerdefininierte Eigenschaften abgespeichert und abgefragt.

Hier die Codes:

Code:
' **************************************************************
'  Modul:  DieseArbeitsmappe  Typ = Element der Mappe(Sheet, Workbook, ...)
' **************************************************************

Option Explicit

Dim oKlasseExcel As clsExcelApp

Private Sub Workbook_Open()
  Set oKlasseExcel = New clsExcelApp
  Set oKlasseExcel.ExcelWatch = Application
End Sub



' **************************************************************
'  Modul:  clsExcelApp  Typ = Klassenmodul
' **************************************************************

Option Explicit

Public WithEvents ExcelWatch As Application

Private Sub ExcelWatch_WorkbookActivate(ByVal Wb As Workbook)
  FenstereinstellungenSetzenSpeichern Wb, "Setzen"
End Sub

Private Sub ExcelWatch_WorkbookDeactivate(ByVal Wb As Workbook)
  FenstereinstellungenSetzenSpeichern Wb, "Speichern"
End Sub



' **************************************************************
'  Modul:  m_Fenstereinstellungen  Typ = Allgemeines Modul
' **************************************************************

Option Explicit

Sub FenstereinstellungenSetzenSpeichern(oWb As Workbook, strVorgang As String)
  Dim oProp As DocumentProperty
  Dim Fenster_L As DocumentProperty
  Dim Fenster_T As DocumentProperty
  Dim Fenster_H As DocumentProperty
  Dim Fenster_W As DocumentProperty
  Dim Fenster_S As DocumentProperty
  
  For Each oProp In oWb.CustomDocumentProperties
    If oProp.Name = "Fenster_L" Then Set Fenster_L = oProp
    If oProp.Name = "Fenster_T" Then Set Fenster_T = oProp
    If oProp.Name = "Fenster_H" Then Set Fenster_H = oProp
    If oProp.Name = "Fenster_W" Then Set Fenster_W = oProp
    If oProp.Name = "Fenster_S" Then Set Fenster_S = oProp
  Next oProp
  
  Select Case strVorgang
  
    Case "Speichern"
      If Fenster_L Is Nothing Then
        oWb.CustomDocumentProperties.Add "Fenster_L", 0, 1, Application.Left
      Else
        Fenster_L.Value = Application.Left
      End If
      If Fenster_T Is Nothing Then
        oWb.CustomDocumentProperties.Add "Fenster_T", 0, 1, Application.Top
      Else
        Fenster_T.Value = Application.Top
      End If
      If Fenster_H Is Nothing Then
        oWb.CustomDocumentProperties.Add "Fenster_H", 0, 1, Application.Height
      Else
        Fenster_H.Value = Application.Height
      End If
      If Fenster_W Is Nothing Then
        oWb.CustomDocumentProperties.Add "Fenster_W", 0, 1, Application.Width
      Else
        Fenster_W.Value = Application.Width
      End If
      If Fenster_S Is Nothing Then
        oWb.CustomDocumentProperties.Add "Fenster_S", 0, 1, Application.WindowState
      Else
        Fenster_S.Value = Application.WindowState
      End If
      
    Case "Setzen"
      If Not Fenster_S Is Nothing Then
        Application.WindowState = Fenster_S
        If Fenster_S = -4143 Then
          If Not Fenster_L Is Nothing Then Application.Left = Fenster_L.Value
          If Not Fenster_T Is Nothing Then Application.Top = Fenster_T.Value
          If Not Fenster_H Is Nothing Then Application.Height = Fenster_H.Value
          If Not Fenster_W Is Nothing Then Application.Width = Fenster_W.Value
        End If
      End If
      
  End Select
End Sub

Gruß Uwe