userform u durum çubuğuna indirme

Katılım
10 Mayıs 2007
Mesajlar
1,395
Excel Vers. ve Dili
2007 Türkçe
merhabalar hazırladığım programda userform umu durum çubuğuna indirmemi sağlayacak bir kod varmı acaba?
 
Katılım
10 Mayıs 2007
Mesajlar
1,395
Excel Vers. ve Dili
2007 Türkçe
arkadaşlar bütün örneklere baktım arattım ama bulamadım.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
http://www.excel.web.tr/showpost.php?p=247279&postcount=5
http://www.excel.web.tr/showthread.php?t=24833&highlight=userform
incelermisiniz

Kod:
Sub UserformlardaEkOzellik(Form As Object, _
                        Optional ByVal blMODAL As Boolean = False, _
                        Optional ByVal blShwCap As Boolean = True, _
                        Optional ByVal blShwTskBr As Boolean = True, _
                        Optional ByVal blShwClsBt As Boolean = False, _
                        Optional ByVal blShwMaxBt As Boolean = False, _
                        Optional ByVal blShwMinBt As Boolean = False, _
                        Optional ByVal blBoyutlndr As Boolean = False, _
                        Optional ByVal blKckCap As Boolean = False, _
                        Optional ByVal blShwSysMn As Boolean = True, _
                        Optional ByVal blShwIcon As Boolean = False, _
                        Optional ByVal strIcnPth As String = "")
                        

'Call KlsrDgr
Set oFormChanger.Form = Form
With oFormChanger
    .Modal = blMODAL               'Modal?
    .ShowCaption = blShwCap          'True:Başlıklı, False:Başlıksız
    .ShowTaskBarIcon = blShwTskBr     'Görev çubuğunda olmasın: false; olsun; True
    .ShowCloseBtn = blShwClsBt         'Kapatma Butonu Aktifse: True, Pasifse; False
    .ShowMaximizeBtn = blShwMaxBt      'Max Butonu Aktifse: True, Pasifse; False
    .ShowMinimizeBtn = blShwMinBt      'Min Butonu Aktifse: True, Pasifse; False
    .Sizeable = blBoyutlndr            'Boyutlandırma Aktifse: True, Pasifse; False
    .SmallCaption = blKckCap        'küçük Başlık
    .ShowSysMenu = blShwSysMn          '????????????
    .ShowIcon = True           'ikon Gösterilsinmi
    .IconPath = strIcnPth
    
    
    If .SmallCaption = True Then Form.Height = Form.Height - 0.4     'küçük başlık seçilmişse userformu küçült
    If .ShowCloseBtn = False And .ShowMaximizeBtn = False And _
        .ShowMinimizeBtn = False And .ShowIcon = False Then   'Min,Max,Close Butonları yoksa ve icon gösterilmeyecekse
        .ShowCaption = False                              'başlıkta kaldırılsın.
    End If
End With
End Sub
CFormChanger Class modulü
Kod:
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) 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 GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function EnableWindow Lib "user32" (ByVal hWnd As Long, ByVal fEnable As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function SetFocus Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam 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_SYSMENU As Long = &H80000
Private Const WS_THICKFRAME As Long = &H40000
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 WS_EX_TOOLWINDOW As Long = &H80
Private Const SC_CLOSE As Long = &HF060
Private Const SW_HIDE As Long = 0
Private Const SW_SHOW As Long = 5
Private Const WM_SETICON = &H80
Dim hWndForm As Long, mbSizeable As Boolean, mbCaption As Boolean, mbIcon As Boolean, miModal As Integer
Dim mbMaximize As Boolean, mbMinimize As Boolean, mbSysMenu As Boolean, mbCloseBtn As Boolean
Dim mbAppWindow As Boolean, mbToolWindow As Boolean, msIconPath As String
Dim moForm As Object

Public Property Set Form(oForm As Object)
    If Val(Application.Version) < 9 Then
        hWndForm = FindWindow("ThunderXFrame", oForm.Caption)
    Else
        hWndForm = FindWindow("ThunderDFrame", oForm.Caption)
    End If
    Set moForm = oForm
    SetFormStyle
End Property
Public Property Let Sizeable(bSizeable As Boolean)
    mbSizeable = bSizeable
    SetFormStyle
End Property
Public Property Get Sizeable() As Boolean
    Sizeable = mbSizeable
End Property
Public Property Let ShowCaption(bCaption As Boolean)
    mbCaption = bCaption
    SetFormStyle
End Property
Public Property Get ShowCaption() As Boolean
    ShowCaption = mbCaption
End Property

Public Property Let Modal(bModal As Boolean)
    miModal = Abs(CInt(Not bModal))
    EnableWindow FindWindow("XLMAIN", Application.Caption), miModal
End Property
Public Property Get Modal() As Boolean
    Modal = (miModal <> 1)
End Property
Public Property Let ShowIcon(bIcon As Boolean)
    mbIcon = Not bIcon
    ChangeIcon
    SetFormStyle
End Property
Public Property Get ShowIcon() As Boolean
    ShowIcon = (mbIcon <> 1)
End Property
Public Property Let IconPath(sNewPath As String)
    msIconPath = sNewPath
    ChangeIcon
End Property
Public Property Get IconPath() As String
    IconPath = msIconPath
End Property
Public Property Let ShowMaximizeBtn(bMaximize As Boolean)
    mbMaximize = bMaximize
    SetFormStyle
End Property
Public Property Get ShowMaximizeBtn() As Boolean
    ShowMaximizeBtn = mbMaximize
End Property
Public Property Let ShowMinimizeBtn(bMinimize As Boolean)
    mbMinimize = bMinimize
    SetFormStyle
End Property
Public Property Get ShowMinimizeBtn() As Boolean
    ShowMinimizeBtn = mbMinimize
End Property
Public Property Let ShowSysMenu(bSysMenu As Boolean)
    mbSysMenu = bSysMenu
    SetFormStyle
End Property
Public Property Get ShowSysMenu() As Boolean
    ShowSysMenu = mbSysMenu
End Property
Public Property Let ShowCloseBtn(bCloseBtn As Boolean)
    mbCloseBtn = bCloseBtn
    SetFormStyle
End Property
Public Property Get ShowCloseBtn() As Boolean
    ShowCloseBtn = mbCloseBtn
End Property
Public Property Let ShowTaskBarIcon(bAppWindow As Boolean)
    If hWndForm <> 0 And mbAppWindow And Not bAppWindow Then
        EnableWindow FindWindow("XLMAIN", Application.Caption), True
        ShowWindow hWndForm, SW_HIDE
    End If
    mbAppWindow = bAppWindow
    SetFormStyle
    moForm.Repaint
    EnableWindow FindWindow("XLMAIN", Application.Caption), miModal
End Property
Public Property Get ShowTaskBarIcon() As Boolean
    ShowTaskBarIcon = mbAppWindow
End Property
Public Property Let SmallCaption(bToolWindow As Boolean)
    mbToolWindow = bToolWindow
    SetFormStyle
End Property
Public Property Get SmallCaption() As Boolean
    SmallCaption = mbToolWindow
End Property
Private Sub SetFormStyle()
    Dim iStyle As Long, hMenu As Long, hID As Long, iItems As Integer
    If hWndForm = 0 Then Exit Sub
    iStyle = GetWindowLong(hWndForm, GWL_STYLE)
    If mbCaption Then iStyle = iStyle Or WS_CAPTION Else iStyle = iStyle And Not WS_CAPTION
    If mbSysMenu Then iStyle = iStyle Or WS_SYSMENU Else iStyle = iStyle And Not WS_SYSMENU
    If mbSizeable Then iStyle = iStyle Or WS_THICKFRAME Else iStyle = iStyle And Not WS_THICKFRAME
    If mbMinimize Then iStyle = iStyle Or WS_MINIMIZEBOX Else iStyle = iStyle And Not WS_MINIMIZEBOX
    If mbMaximize Then iStyle = iStyle Or WS_MAXIMIZEBOX Else iStyle = iStyle And Not WS_MAXIMIZEBOX
    If mbAppWindow Then iStyle = iStyle And Not WS_VISIBLE And Not WS_POPUP Else iStyle = iStyle Or WS_VISIBLE Or WS_POPUP
    SetWindowLong hWndForm, GWL_STYLE, iStyle
    iStyle = GetWindowLong(hWndForm, GWL_EXSTYLE)
    If mbIcon Then iStyle = iStyle Or WS_EX_DLGMODALFRAME Else iStyle = iStyle And Not WS_EX_DLGMODALFRAME
    If mbAppWindow Then iStyle = iStyle Or WS_EX_APPWINDOW Else iStyle = iStyle And Not WS_EX_APPWINDOW
    If mbToolWindow Then iStyle = iStyle Or WS_EX_TOOLWINDOW Else iStyle = iStyle And Not WS_EX_TOOLWINDOW
    SetWindowLong hWndForm, GWL_EXSTYLE, iStyle
    If mbCloseBtn Then
        hMenu = GetSystemMenu(hWndForm, 1)
    Else
        hMenu = GetSystemMenu(hWndForm, 0)
        DeleteMenu hMenu, SC_CLOSE, 0&
    End If
    ShowWindow hWndForm, SW_SHOW
    DrawMenuBar hWndForm
    SetFocus hWndForm
End Sub
Private Sub ChangeIcon()
    Dim hIcon As Long
    If hWndForm <> 0 Then
        Err.Clear
        If msIconPath = "" Then
            hIcon = 0
        ElseIf Dir(msIconPath) = "" Then
            hIcon = 0
        ElseIf Err.Number <> 0 Then
            hIcon = 0
        ElseIf Not mbIcon Then
            hIcon = ExtractIcon(0, msIconPath, 0)
        Else
            hIcon = 0
        End If
        SendMessage hWndForm, WM_SETICON, True, hIcon
        SendMessage hWndForm, WM_SETICON, False, hIcon
    End If
End Sub
yukarıdaki modülleri oluşturduktan sonra belgenizi BenimUserformum.xla olara kaydedin.
BenimUserformum.xla dosyasını eklentilerde işaretleyin.
userforma ek öxellik katmak istediğiniz belgenizde refernceslerden de BenimUserformum.xla seçin.




Kod:
Private Sub UserForm_Activate()
Call UserformlardaEkOzellik(Me, , , True, True, True, True)
End Sub
 
Son düzenleme:
Katılım
10 Mayıs 2007
Mesajlar
1,395
Excel Vers. ve Dili
2007 Türkçe
bu benim i&#231;in fazla profesyonelce oldu kodlar&#305; ekledim ama hata verid kendime uyarlayamad&#305;m saedece userformun kod alan&#305;n kod ekleniyor san&#305;yordum
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Sn Hrnkp K&#305;saca izah edeyim 3. mesajdaki

1. kodlar Module1 (Insert>Module) Alan&#305;na ekleniyor.
2. kodlar ClassModule1 (Insert>Class Module) Alan&#305;na ekleniyor. ve Proportiesten ismi CFormChanger &#351;eklinde de&#287;i&#351;tiriliyor.

3. Kodlar Ekledi&#287;iniz userformun activate olay&#305;na ekleniyor veya ba&#351;ka bir kod yoksa orada yerini al&#305;yor.
 
Katılım
26 Kasım 2007
Mesajlar
24
Excel Vers. ve Dili
Türkçe
Aşağıda bir örnek dosya mevcut inceleyebilirmisiniz
 
Katılım
10 Mayıs 2007
Mesajlar
1,395
Excel Vers. ve Dili
2007 Türkçe
say&#305;n alpmus g&#246;nderid&#287;iniz &#246;rnekte userform sadece akt k&#246;&#351;eye iniyor yani yine excele m&#252;dahale edilmiyor ilginize te&#351;ekk&#252;r ederim:)
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
http://www.excel.web.tr/showthread.php?t=46843
veya bu linkteki uygulamayı indirip, Projenizde referans olarak tanımlayınız ve userform ekleyeceğiniz kitapta 3. mesajda verilen 3. kodu Userfomunuza ekleyiniz.
sayın alpmus gönderidğiniz örnekte userform sadece akt köşeye iniyor yani yine excele müdahale edilmiyor ilginize teşekkür ederim:)
benim dediğimi denedinizmi acaba
Yukarıdaki linkteki dosyayı alın ve addins kalsörüne bırakın. şimdi eklediğimi açın ve sonucu gözleyin.
 
Son düzenleme:
Katılım
10 Mayıs 2007
Mesajlar
1,395
Excel Vers. ve Dili
2007 Türkçe
say&#305;n hsayar ilginiz ve yard&#305;m&#305;n&#305;z i&#231;in &#231;ok te&#351;ekk&#252;r ederim.dedi&#287;im gibi bu kod olay&#305;nda falza iyi de&#287;ilim baz&#305; kodlar&#305; kendime uyarlayabiliyorum ama baz&#305;lar&#305;n&#305; yapam&#305;yorum mesela bu istedi&#287;im &#246;rne&#287;i uyarlamay&#305; ba&#351;aramad&#305;m ben bunun basit bir kodu o&#305;ldu&#287;unu tahmin etmi&#351;tim ilginiz i&#231;in &#231;ok te&#351;ekk&#252;r ederim daha fazla s&#305;km&#305;yim sizi:) kolay gelsin.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
verdi&#287;im linkteki dosyay&#305; indirin ve 10. mesaja ekledi&#287;im &#246;rnek dosyay&#305; inceleyin
 
Katılım
26 Kasım 2007
Mesajlar
24
Excel Vers. ve Dili
Türkçe
User Form-Properties
Show Madal-False yap&#305;n excel e m&#252;dahale edebilirsiniz iyi &#231;al&#305;&#351;malar
 
Üst