Individuelle Größe eines Datenblatts beim Start
#11
@schauan

Habe mich wohl nicht so doll ausgedrückt.

Also, es sind einzelne xlsx-Dateien die immer nur aus einem Tabellenblatt bestehen. Also nicht Tabelle1, Tabelle2 etc. innerhalb der xlsx-Datei. Diese einzelnen Dateien sollen mit einer individuellen Größe gestartet werden. Aufgerufen durch eine Verknüpfung die auf dem Desktop liegt. Und das ist es, was bei  mir nicht funktioniert.

Ich hoffe, ich habe es etwas deutlicher formulieren können.

Gruß
BTW
Antworten Top
#12
(08.12.2025, 19:31)bytheway schrieb: Habe mich wohl nicht so doll ausgedrückt.
Also, es sind einzelne xlsx-Dateien die immer nur aus einem Tabellenblatt bestehen. 

Eine Exceldatei besteht nicht aus einem Tabellenblatt, sie enthält mindestens ein Blatt (Tabellenblatt auf Exceldeutsch), das ist das Ding was in einer neuen Datei "Tabelle1" heißt. Der Name ist irreführend denn das ist keine Tabelle, eine Tabelle ist eine Struktur die in einem Blatt vorkommen kann, d.h. auch davon kann es mehrere geben.

VBA und das UI von Excel laufen nicht sequentiell, sondern asyncron, daher ist es nicht so einfach in einem Ereignis, und speziell in Workbook_Open, mit VBA die UI zu beeinflussen.

Meistens reicht es aus den Code zeitverzögert außerhalb des Events zu starten, wenn das so nicht geht dann addiere TimeSerial(0,0,1) zu Now in folgendem Code, dieser gehört in das Codemodul "DieseArbeitsmappe" der Datei.

Wenn das auch nicht funktioniert dann könnte es sein das auf Deinem Rechner noch irgendwas anderes werkelt was die Verschiebung des Fensters verhindert / rückgängig macht. Ich verwendete für diese Positionierung und div. andere Features ein Tool namens Actual Window Manager.
https://www.actualtools.com/

Andreas.


Code:
Option Explicit

Dim L, T, W, H

Private Sub Workbook_Open()
  L = 0
  T = 0
  W = 1024
  H = 860
  Application.OnTime Now, Me.CodeName & ".MoveWindow"
End Sub

Private Sub MoveWindow()
  With Me.Windows(1)
    Do While Not .Visible
      DoEvents
    Loop
    .WindowState = xlNormal
    .Left = L
    .Top = T
    .Width = W
    .Height = H
  End With
End Sub
Antworten Top
#13
Hallöchen,

also, so ganz beantwortet ist das mit der Größe nicht. Ok, dann gehe ich mal von einer festen Größe aus, die der Anwender aber beeinflussen kann.

Schaue in die Eigenschaften des Dokuments. Dort hast Du einige ungenutzte Felder, bei mir z,B die Versionsnummer. Dort habe ich die gewünschte Größe eingetregen, hier 200x300

   

In der Datei habe ich in diese Arbeitsmappe diesen Code eingefügt:

Code:
Private Sub Workbook_Open()
propVal = ThisWorkbook.BuiltinDocumentProperties("Document version")
Application.Height = Split(propVal, "x")(0)
Application.Width = Split(propVal, "x")(1)
End Sub

Wenn dem Anwender die Größe nicht passt, könnte er das bei den Eigenschaften ändern Wink
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#14
Hi
ohne Programmierung wird es nicht gehen.
die vollautomatische Größenanpassung hat ein paar "Schwierigkeiten"; die die Programmierung kompliziert machen, wenn es gut werden soll.

der einfachste Weg wäre, die benutzerdefinierten Ansichten zu verwenden.

Lege hierzu für jedes Datenblatt eine solche an, gehe dabei so vor:
1. Ziehe das Fenster auf die gewünschte Größe
2. klicke jetzt im Menü: Ansicht - Arbeitsmappenansichten - Benutzerdefinierte Ansichten und füge hier eine neue Ansicht hinzu (Name egal)

Als Makro benötigst du dann nur noch einen Code, der beim Start der Mappe diese Ansicht aktiviert
dazu dieser Code ins Modul "DieseArbeitsmappe" der jeweiligen Datei:
Code:
Private Sub Workbook_Open()
If Me.CustomViews.Count > 0 Then Me.CustomViews(1).Show
End Sub


Gruß Daniel
Antworten Top


Gehe zu:


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