Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Ereigniscode für Minimieren/Maximieren von Excel | Herbers Excel-Forum


Betrifft: Ereigniscode für Minimieren/Maximieren von Excel von: Reinhard
Geschrieben am: 13.02.2012 14:15:26

Hallo Wissende,

nachstehender Code wertet aus ob das Fenster der Arbeitsmappe minimiert/maximiert wird.
Wie kann ich das Gleiche tun mit der Excel-Instanz?

Gruß ^ Danke
Reinhard

Private Sub Workbook_WindowResize(ByVal Wn As Window)
Select Case Wn.WindowState
  Case xlMaximized
    MsgBox "maximiert"
  Case xlMinimized
    MsgBox "minimiert"
  Case xlNormal
    MsgBox "weder noch"
  Case Else
    MsgBox "unerwartet"
End Select
MsgBox ThisWorkbook.Parent.WindowState  'Zustand der Excelinstanz
End Sub

  

Betrifft: AW: Ereigniscode für Minimieren/Maximieren von Excel von: Oberschlumpf
Geschrieben am: 13.02.2012 15:10:25

Hi Reinhard

Bin nich sicher, ungetestet

Application.WindowsSize

??

Ciao
Thorsten


  

Betrifft: AW: Ereigniscode für Minimieren/Maximieren von Excel von: Reinhard
Geschrieben am: 13.02.2012 15:20:08

Hallo Thorsten,

sorry, hab's wohl wieder mal blöd erklärt :-(

ich suche Ereigniscode der reagiert wenn ich Excel in die Taskleiste verkleinere und
auch wenn ich es wieder als Fenster maximiere.

Quasi sowas:

Private Sub ExcelInstanz_WindowResize(ByVal EI As Window)

Gruß
Reinhard


  

Betrifft: AW: Ereigniscode für Minimieren/Maximieren von Excel von: Nepumuk
Geschrieben am: 13.02.2012 18:30:15

Hallo,

so etwas gibt es in Excel nicht. Ich hab aber eine DLL mit der du das machen kannst. Interesse?

Gruß
Nepumu


  

Betrifft: AW: Ereigniscode für Minimieren/Maximieren von Excel von: Reinhard
Geschrieben am: 13.02.2012 19:27:53

Hallo Max,

aber ja, danke erstmal.

Gruß
Reinhard


  

Betrifft: AW: Ereigniscode für Minimieren/Maximieren von Excel von: Nepumuk
Geschrieben am: 13.02.2012 19:44:47

Hallo,

in der Zip eine Mappe mit dem Anwendungsbeispiel. Minimieren, maximieren und normalisieren löst in Modul basWindowSize eine Msgbox aus. Die Klasse in der Mappe registriert die DLL automatisch bei Bedarf. https://www.herber.de/bbs/user/78901.zip

Der Code in der DLL:

' **********************************************************************
' Modul: clsWindowResize Typ: Klassenmodul
' **********************************************************************

Option Explicit

Public Event WindowResize(ByVal plngSize As Long)

Private Sub Class_Initialize()
    Load Form1
    Set Form1.mobjWindowResizeClass = Me
    Form1.Timer1.Interval = 100
End Sub

Private Sub Class_Terminate()
    Form1.Timer1.Interval = 0
    Unload Form1
End Sub

Public Property Let Excel_Hwnd(ByVal pvlngExcel_Hwnd As Long)
    Form1.ExcelHwnd = pvlngExcel_Hwnd
End Property

Friend Property Let NewWindowSize(ByVal pvWindowSize As Long)
    RaiseEvent WindowResize(pvWindowSize)
End Property

' **********************************************************************
' Modul: Form1 Typ: Userform
' **********************************************************************

Option Explicit

Private Declare Function GetWindowPlacement Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByRef lpwndpl As WINDOWPLACEMENT) As Long

Private Type POINTAPI
    x As Long
    y As Long
End Type

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Type WINDOWPLACEMENT
    Length As Long
    flags As Long
    showCmd As Long
    ptMinPosition As POINTAPI
    ptMaxPosition As POINTAPI
    rcNormalPosition As RECT
End Type

Public mobjWindowResizeClass As clsWindowResize

Private mlngExcelHwnd As Long
Private mlngWindowSize As Long

Private Sub Form_Terminate()
    Set mobjWindowResizeClass = Nothing
End Sub

Private Sub Timer1_Timer()
    Static sblnNotFirstTime As Boolean
    Dim udtWinEst As WINDOWPLACEMENT
    udtWinEst.Length = Len(udtWinEst)
    Call GetWindowPlacement(mlngExcelHwnd, udtWinEst)
    If mlngWindowSize <> udtWinEst.showCmd Then
        mlngWindowSize = udtWinEst.showCmd
        If sblnNotFirstTime Then _
            mobjWindowResizeClass.NewWindowSize = mlngWindowSize
        sblnNotFirstTime = True
    End If
End Sub

Friend Property Let ExcelHwnd(ByVal pvlngExcelHwnd As Long)
    mlngExcelHwnd = pvlngExcelHwnd
End Property

Gruß
Nepumuk


  

Betrifft: AW: Ereigniscode für Minimieren/Maximieren von Excel von: Reinhard
Geschrieben am: 13.02.2012 20:57:05

Hallo Max,

sehr schön mit der Test.xls, ansonsten hätte ich gewaltige Probleme mit dem DLL-Code gehabt.
Funktioniert bestens in XL 2000.

Gruß
Reinhard


Beiträge aus den Excel-Beispielen zum Thema "Ereigniscode für Minimieren/Maximieren von Excel "