Excel 2007 VBA Minimalizace formu

Programy pro práci s textem, tabulkami, prezentacemi

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod nofire 4. 4. 2013 13:36

Zdar,
neuměl byste mi někdo poradit ?
Vyplodil jsem aplikaci v Excelu 2007 v prostředí Windows 7. Udělal jsem formulář ve VBA, který se otevírá při načtení sešitu. Všechno pracuje v pohodě jenom formuláře vytvořené ve VBA v excelu nemají normálně vpravo nahoře tři ikony pro minimalizaci, maximalizaci a zavření.Obrázek Na počítači se musí ale pracovat i v jiných programech (pošta, internet apod) a proto potřebuju shodit formulář na lištu. Vygooglil jsem nějaký kód pro minimalizaci formu na lištu a s tímto vygoogleným kódem funguje shození na lištu. Pak chci tedy dělat v jiným programu a chci shodit ten Form na lištu, kliknu na symbol (to malý podtržítko, který je na každým formuláři první ze tří) ten se minimalizuje, ale ten sešit, ze kterýho se form otevřel zůstane normálně zobrazený. Nejhorší je, že ten sešit nemůžu taky shodit na lištu, protože ho zřejmě "drží" ten formulář a ty 3 ikonky na sešitu jsou neaktivní.

Nevíte jak to vyřešit ?
Díky !!

Kód: Vybrat vše
'do modulu
Option Explicit
Private Declare Function _
      FindWindowA Lib "USER32" _
      (ByVal lpClassName As String, _
      ByVal lpWindowName As String) As Long
Private Declare Function _
      GetWindowLongA Lib "USER32" _
      (ByVal hWnd As Long, _
      ByVal nIndex As Long) As Long
Private Declare Function _
      SetWindowLongA Lib "USER32" _
      (ByVal hWnd As Long, _
      ByVal nIndex As Long, _
      ByVal dwNewLong As Long) As Long
Sub FormatUserForm(UserFormCaption As String)
Dim hWnd As Long
Dim exLong As Long
    hWnd = FindWindowA(vbNullString, UserFormCaption)
    exLong = GetWindowLongA(hWnd, -16)
    If (exLong And &H20000) = 0 Then
        SetWindowLongA hWnd, -16, exLong Or &H20000
        Else
    End If
End Sub
Sub ShowForm()
    Autocentrum.Show
End Sub

'do formu
Private Sub UserForm_Initialize()
    Call FormatUserForm(Me.Caption)
End Sub
Přílohy
control.jpg
control.jpg (5.67 ) Zobrazeno 2904 krát
Ve víně je pravda... ale ve kterém ? Stále ho hledám.
nofire
Junior
Uživatelský avatar

Odeslat příspěvekod PotkyCZ 5. 4. 2013 16:45

Zdravim, divim se, ze by Office 07 neumel tvuj pozadovany form. Pamatuji, ze 03 mel nekolik typu formularu. Podivam se doma, to jen takovy tip na cestach.
PotkyCZ
Kolemjdoucí

Odeslat příspěvekod Skelnik 5. 4. 2013 18:26

Neni nutné minimalizovat. Může být na pozadí.
Skelnik
Junior

Odeslat příspěvekod JjJg 5. 4. 2013 18:38

Upraveno - dvě událostní procedury do kódu formuláře - s nastavováním vlastnosti Application.Visible (zkoušeno v Excelu 2007) při detekci shození, obnovy nebo zavření formuláře

Private Sub UserForm_Resize()
If Me.Height < 30 Then 'Formulář se minimalizuje (test výšky formuláře - mez zkusmo)
Application.Visible = False
Else 'Formulář se obovuje
Application.Visible = True
End If
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Application.Visible = True 'Zviditelnit Excel při zavření formuláře v minimalizovaném stavu
End Sub
JjJg
Kolemjdoucí

Odeslat příspěvekod nofire 5. 4. 2013 20:06

tak už jsem asi našel chybu. Já jsem měl nastaven formulář jako modální. Po nastavení modálního formu na False se aplikace minimalizuje spolu se sešitem. Ale přsto díky za tipy.
Ve víně je pravda... ale ve kterém ? Stále ho hledám.
nofire
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků