Userform'un minimize olması.

Katılım
16 Kasım 2008
Mesajlar
56
Excel Vers. ve Dili
excel2003
Arkadaşlar yardımınızı bekliyorum.



"AnaForm" adında formum var. Forma eklediğim komut butonuna tıkladığımda çalışma kitabımdaki istediğim sayfaya gitmesi, ardından da formun görev çubuğunda minimize olması için hangi kodu eklemem gerekiyor.

User forma görev çubuğunda minimize olmasını sağlayacak kod satırlarını ekledim. Minimize tuşuna basınca minimize oluyor ancak ben bunun komut butonuna basınca önce isteğim sayfaya gitmesini sonra kendiliğinden görev çubuğunda minimize olasın istiyorum. İlginize teşekkür ederim.



Private Sub CekSeriNuCzl_CommandButton_Click()
Sheets("Seri Nu.Çzlg").Select
_______Buraya yazılacak kod__________
End Sub
 
Katılım
16 Kasım 2008
Mesajlar
56
Excel Vers. ve Dili
excel2003
Halit Ustam sorunu çözdü çözüm aşağıda;
 
Son düzenleme:
Katılım
16 Kasım 2008
Mesajlar
56
Excel Vers. ve Dili
excel2003
Ustalardan yardım bekliyorum.

Option Explicit
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetFocus Lib "user32" (ByVal hWnd As Long) As Long

Private Const GWL_STYLE As Long = -16
Private Const GWL_EXSTYLE As Long = -20
Private Const WS_CAPTION As Long = &HC00000
Private Const WS_MINIMIZEBOX As Long = &H20000
Private Const WS_MAXIMIZEBOX As Long = &H10000
Private Const WS_POPUP As Long = &H80000000
Private Const WS_VISIBLE As Long = &H10000000
Private Const WS_EX_DLGMODALFRAME As Long = &H1
Private Const WS_EX_APPWINDOW As Long = &H40000
Private Const SW_SHOW As Long = 5
Private Sub UserForm_Activate()
Dim lngHwnd As Long
Dim lngCurrentStyle As Long, lngNewStyle As Long

If Val(Application.Version) < 9 Then
lngHwnd = FindWindow("ThunderXFrame", Me.Caption) 'XL97
Else
lngHwnd = FindWindow("ThunderDFrame", Me.Caption) 'XL2000, XP, 2003?
End If
'UserForm'a Windows sitilinde has a minimise and maximise button
lngCurrentStyle = GetWindowLong(lngHwnd, GWL_STYLE)
lngNewStyle = lngCurrentStyle Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
lngNewStyle = lngNewStyle And Not WS_VISIBLE And Not WS_POPUP
SetWindowLong lngHwnd, GWL_STYLE, lngNewStyle
'Görev Çubuğu (taskbar) icon olarak gözükmesi
lngCurrentStyle = GetWindowLong(lngHwnd, GWL_EXSTYLE)
lngNewStyle = lngCurrentStyle Or WS_EX_APPWINDOW
SetWindowLong lngHwnd, GWL_EXSTYLE, lngNewStyle
ShowWindow lngHwnd, SW_SHOW
End Sub



Private Sub CekSeriNuCzl_CommandButton_Click()
Sheets("Seri Nu.Çzlg").Select
'_______Buraya yazılacak kod__________

End Sub


Ayrıca aşağıdaki kodları forma eklediğimde form üzerindeki nesnelerle birlikte
tam ekran oluyor ancak form üzerindeki sağ üst köşedeki normal ekran tuşuna basınca normal ekran olmuyor. Bunada bir çözüm bulabilirmiyiz.


Private Sub UserForm_Initialize()
Dim X1 As Long, Y1 As Long, Y2 As Long, X2 As Long
Dim CX As Double, CY As Double
Dim MyCtrl As Control
X1 = Application.Width
Y1 = Application.Height
X2 = Me.Width
Y2 = Me.Height
CX = X1 / X2
CY = Y1 / Y2
Me.Width = X1
Me.Height = Y1
For Each MyCtrl In Me.Controls
MyCtrl.Top = MyCtrl.Top * CY
MyCtrl.Left = MyCtrl.Left * CX
MyCtrl.Width = MyCtrl.Width * CX
MyCtrl.Height = MyCtrl.Height * CY
On Error Resume Next
MyCtrl.Font.Size = MyCtrl.Font.Size * CY
On Error GoTo 0
Next
End Sub
 
Katılım
16 Kasım 2008
Mesajlar
56
Excel Vers. ve Dili
excel2003
İlginize teşekkür ederim dosyayı yükledim.

[link=http://www.dosyayukleyin.com/do.php?id=4672]deneme.rar[/link]
 
Son düzenleme:
Katılım
16 Kasım 2008
Mesajlar
56
Excel Vers. ve Dili
excel2003
Sorunu ustalar sayesinde çözdük şükür.
 
Son düzenleme:

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
kod:

Kod:
Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Dim g_hForm

[COLOR="Red"]Private Sub CommandButton1_Click()
ShowWindow g_hForm, 2
End Sub[/COLOR]

Private Sub UserForm_Initialize()
g_hForm = FindWindow(vbNullString, Me.Caption)
SetWindowLong g_hForm, -16, &H20000 Or &H10000 Or &H84C80080
End Sub
 
Katılım
16 Kasım 2008
Mesajlar
56
Excel Vers. ve Dili
excel2003
[link=http://www.dosyayukleyin.com/do.php?id=4672]deneme.rar[/link]
dosyayı bu link'e yükledim bir bakarsanız sevinirim.
 
Son düzenleme:

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Halit Bey yazdığınız kodları ekledim ama olmadı.

Yapmaya çalıştığı şey form üzerindeki komut butonuna basınca istediğim sayfaya gitmesi sonrada formun minimize olması.
[link=http://www.dosyayukleyin.com/do.php?id=4672]deneme.rar[/link]
dosyayı bu link'e yükledim bir bakarsanız sevinirim.
7 nolu mesajdaki yazdığım kodları hiç denemediğinizi anlıyorum.

sizin kodlarınız.

Kod:
Option Explicit
    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function SetFocus Lib "user32" (ByVal hWnd As Long) As Long

    Private Const GWL_STYLE As Long = -16
    Private Const GWL_EXSTYLE As Long = -20
    Private Const WS_CAPTION As Long = &HC00000
    Private Const WS_MINIMIZEBOX As Long = &H20000
    Private Const WS_MAXIMIZEBOX As Long = &H10000
    Private Const WS_POPUP As Long = &H80000000
    Private Const WS_VISIBLE As Long = &H10000000
    Private Const WS_EX_DLGMODALFRAME As Long = &H1
    Private Const WS_EX_APPWINDOW As Long = &H40000
    Private Const SW_SHOW As Long = 5
  [COLOR="red"] Dim g_hForm[/COLOR]

Private Sub CommandButton1_Click()
    Sheets("Seri Nu.Çzlg").Select
     ShowWindow g_hForm, 2
End Sub

Private Sub UserForm_Activate()
    Dim lngHwnd As Long
        Dim lngCurrentStyle As Long, lngNewStyle As Long

        If Val(Application.Version) < 9 Then
        lngHwnd = FindWindow("ThunderXFrame", Me.Caption)  'XL97
            Else
        lngHwnd = FindWindow("ThunderDFrame", Me.Caption)  'XL2000, XP, 2003?
    End If
   [COLOR="red"] g_hForm = FindWindow("ThunderDFrame", Me.Caption)[/COLOR]

   
    
'UserForm'a Windows sitilinde has a minimise and maximise button
    lngCurrentStyle = GetWindowLong(lngHwnd, GWL_STYLE)
    lngNewStyle = lngCurrentStyle Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
    lngNewStyle = lngNewStyle And Not WS_VISIBLE And Not WS_POPUP
    SetWindowLong lngHwnd, GWL_STYLE, lngNewStyle
'Görev Çubuğu (taskbar) icon olarak gözükmesi
    lngCurrentStyle = GetWindowLong(lngHwnd, GWL_EXSTYLE)
    lngNewStyle = lngCurrentStyle Or WS_EX_APPWINDOW
    SetWindowLong lngHwnd, GWL_EXSTYLE, lngNewStyle
    ShowWindow lngHwnd, SW_SHOW
End Sub

Private Sub CekSeriNuCzl_CommandButton_Click()
   [COLOR="Red"]  ShowWindow g_hForm, 2[/COLOR]
  Sheets("Seri Nu.Çzlg").Select
'_______Buraya yazılacak kod__________
End Sub


'Ayrıca aşağıdaki kodları forma eklediğimde form üzerindeki nesnelerle birlikte
'tam ekran oluyor ancak form üzerindeki sağ üst köşedeki normal ekran tuşuna basınca
' normal ekran olmuyor. Bunada bir çözüm bulabilirmiyiz.

'Private Sub UserForm_Initialize()
'Dim X1 As Long, Y1 As Long, Y2 As Long, X2 As Long
'    Dim CX As Double, CY As Double
'    Dim MyCtrl As Control
'        X1 = Application.Width
'        Y1 = Application.Height
'        X2 = Me.Width
'       Y2 = Me.Height
'        CX = X1 / X2
'       CY = Y1 / Y2
'        Me.Width = X1
'        Me.Height = Y1
'        For Each MyCtrl In Me.Controls
'            MyCtrl.Top = MyCtrl.Top * CY
'            MyCtrl.Left = MyCtrl.Left * CX
'            MyCtrl.Width = MyCtrl.Width * CX
'           MyCtrl.Height = MyCtrl.Height * CY
'            On Error Resume Next
'                MyCtrl.Font.Size = MyCtrl.Font.Size * CY
'            On Error GoTo 0
'        Next
'End Sub
benim gönderdiğim kodlar

Kod:
Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Dim g_hForm


[COLOR="red"]Private Sub CekSeriNuCzl_CommandButton_Click()
ShowWindow g_hForm, 2
Sheets("Seri Nu.Çzlg").Select
End Sub[/COLOR]

Private Sub UserForm_Initialize()
g_hForm = FindWindow(vbNullString, Me.Caption)
SetWindowLong g_hForm, -16, &H20000 Or &H10000 Or &H84C80080
End Sub
 
Katılım
16 Kasım 2008
Mesajlar
56
Excel Vers. ve Dili
excel2003
Halit hocam çok teşekkür ederim. Sayenizde istediğim oldu.

http://www.excel.web.tr/ kullanıcılarına da belki faydalı olur diye anlatayım:

1. Form üzeni eklediğim komut butonuna tıklanıldığında istenilen excel sayfasına gidilip, sonra formun görev çubuğunda simge durumuna gelmesi gerekiyordu.

2. Bu niçin lazımdı; excel sayfasında işlemler tamamlandıktan sonra tekrar forma geri dönüldüğünde formun en son haliyle açılması için.

3. Eğer form kapatılıp tekrar açılır ise form ilk haliyle geldiğinden, formdaki MultiPage sayfalarında tekrar gezinip en son işlem yapılan sayfaya gelinip tekrar kalınan yerden devam etmek gerekiyordu.
 
Son düzenleme:

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
---------------------------------
 
Üst