Excel VBA - Class Modul ile UserFormda Her Nesnede F Tuşlarını Kullanmak

Class Modul ile UserFormda Her Nesnede F Tuşlarını Kullanmak

Excel VBA Class Module makro ile ilgili işlemleri, DLL, OCX gibi harici nesne uygulamalarını buradan takip edebilir; paylaşabilirsiniz.

Bu Örnek İşinize Yaradı Mı ?

Evet
3
100%
Hayır
0
Oy yok
 
Toplam oy : 3

Class Modul ile UserFormda Her Nesnede F Tuşlarını Kullanmak

İleti Tarkan VURAL » 10 Arl 2009 13:50

UserForm ile çalışırken F tuşlarını da kullanmak istiyorsanız, form üzerindeki her nesnenin KeyDown olayına bu durumu bildirmeniz gerekecek. Form üzerinde çok fazla nesne kullanıyorsanız, her nesnenin KeyDown olayına bu bildirimi yapmak için epeyce prosedür tanımlayıp kod yazmanız gerekir. Eğer yazmazsanız, F tuş basımlarında kodlarınız çalışmayacağı için işlem olmayacaktır. Bir nesneye yazarsanız sadece o nesne aktif iken çalışır. Burada tüm nesnelerle çalışabilecek bir kombinasyon geliştiriyoruz. Class Module uygulamaları bu tür sorunlar için bir çözüm getirir ve nesnelerin olayları için bir takım toplu kod çalıştırma işlemlerine yardım eder, kodları kısaltır.

Form üzerinde 20 adet TextBox, 10 Adet CommandButton vs.. varsa; her nesnenin tek tek KeyDown olaylarına kod yazmaya gerek kalmadan Class ile nasıl yapılacağı konusunda bir örnek çalışma hazırladım. Form açıldığında Standart VBA nesnelerinden hangisi aktif olursa olsun.

Projenize ExcelVBANet adında bir UserForm ekleyin. StdModul adında bir tane Standart Module ekleyin, EVN adında da bir tane de Class Module ekleyin.

ExcelVBANet adlı UserForm'unuzda sadece TextBox, ComboBox, CommandButton, MultiPage vs.. nesneleriniz olsun. Kod sayfasına bu aşamada kod yazmamıza gerek olmuyor. Proje amacınıza göre daha sonra kodlarsınız.

StdModul adlı modüle aşağıdaki kodları yazın.
Kod: Tümünü seç
Global Const evnF1 As Long = &H70
Global Const evnF2 As Long = &H71
Global Const evnF3 As Long = &H72
Global Const evnF4 As Long = &H73
Global Const evnF5 As Long = &H74
Global Const evnF6 As Long = &H75
Global Const evnF7 As Long = &H76
Global Const evnF8 As Long = &H77
Global Const evnF9 As Long = &H78
Global Const evnF10 As Long = &H79
Global Const evnF11 As Long = (&H37 + &H43)
Global Const evnF12 As Long = (&H37 + &H44)
Global Const evnESC As Long = (&H19 + &H2)
Public evnTus As Long
Public Nesne() As New EVN

Static Sub Kontrol()
For Each n In ExcelVBANet.Controls
    e = e + 1
    ReDim Preserve Nesne(1 To e)
    Select Case TypeName(n)
        Case Is = "Label"
            Set Nesne(e).Label = n
        Case Is = "TextBox"
            Set Nesne(e).TextBox = n
        Case Is = "ComboBox"
            Set Nesne(e).ComboBox = n
        Case Is = "CheckBox"
            Set Nesne(e).CheckBox = n
        Case Is = "CommandButton"
            Set Nesne(e).CommandButton = n
        Case Is = "Image"
            Set Nesne(e).Image = n
        Case Is = "ListBox"
            Set Nesne(e).ListBox = n
        Case Is = "MultiPage"
            Set Nesne(e).MultiPage = n
        Case Is = "OptionButton"
            Set Nesne(e).OptionButton = n
        Case Is = "ScrollBar"
            Set Nesne(e).ScrollBar = n
        Case Is = "SpinButton"
            Set Nesne(e).SpinButton = n
        Case Is = "ToggleButton"
            Set Nesne(e).ToggleButton = n
        Case Is = "ExcelVBANet"
            Set Nesne(e).ExcelVBANet = n
    End Select
    Next n
        ExcelVBANet.Show
End Sub

Public Sub ftus()
KeyCode = evnTus
Select Case KeyCode
    Case Is = evnF1
        MsgBox "F1 bastınız"
    Case Is = evnF2
        MsgBox "F2 bastınız"
    Case Is = evnF3
        MsgBox "F3 bastınız"
    Case Is = evnF4
        MsgBox "F4 bastınız"
    Case Is = evnF5
        MsgBox "F5 bastınız"
    Case Is = evnF6
        MsgBox "F6 bastınız"
    Case Is = evnF7
        MsgBox "F7 bastınız"
    Case Is = evnF8
        MsgBox "F8 bastınız"
    Case Is = evnF9
        MsgBox "F9 bastınız"
    Case Is = evnF10
        MsgBox "F10 bastınız"
    Case Is = evnF11
        MsgBox "F11 bastınız"
    Case Is = evnF12
        MsgBox "F12 bastınız"
    Case Is = evnESC
        MsgBox "ESC tuÅŸuna bastınız"
        If MsgBox("Form kapansın mı", vbYesNo + vbQuestion, "Formu Kapatmayı Seçtiniz") = vbYes Then End
End Select
End Sub


EVN adlı Class Module içine de aşağıdaki kod bloklarını ekleyin.
Kod: Tümünü seç
Public WithEvents CheckBox As MSForms.CheckBox
Public WithEvents ComboBox As MSForms.ComboBox
Public WithEvents CommandButton As MSForms.CommandButton
Public WithEvents ExcelVBANet As MSForms.UserForm
Public WithEvents Image As MSForms.Image
Public WithEvents ListBox As MSForms.ListBox
Public WithEvents MultiPage As MSForms.MultiPage
Public WithEvents OptionButton As MSForms.OptionButton
Public WithEvents ScrollBar As MSForms.ScrollBar
Public WithEvents SpinButton As MSForms.SpinButton
Public WithEvents TextBox As MSForms.TextBox
Public WithEvents ToggleButton As MSForms.ToggleButton
Public WithEvents Label As MSForms.Label

Public Sub TextBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
evnTus = KeyCode
Call ftus
End Sub

Public Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
evnTus = KeyCode
Call ftus
End Sub

Public Sub Image_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
evnTus = KeyCode
Call ftus
End Sub

Public Sub CheckBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
evnTus = KeyCode
Call ftus
End Sub

Public Sub ComboBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
evnTus = KeyCode
Call ftus
End Sub

Public Sub CommandButton_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
evnTus = KeyCode
Call ftus
End Sub

Public Sub ListBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
evnTus = KeyCode
Call ftus
End Sub

Public Sub Multipage_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
evnTus = KeyCode
Call ftus
End Sub

Public Sub OptionButton_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
evnTus = KeyCode
Call ftus
End Sub

Public Sub ScrollBar_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
evnTus = KeyCode
Call ftus
End Sub

Public Sub SpinButton_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
evnTus = KeyCode
Call ftus
End Sub

Public Sub ToggleButton_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
evnTus = KeyCode
Call ftus
End Sub

Public Sub ExcelVBANet_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
evnTus = KeyCode
Call ftus
End Sub


ThisWorkbook kod sayfasına da aşağıdaki kodları ekleyip dosyanızı kaydedin ve kapatıp açın.
Kod: Tümünü seç
Private Sub Workbook_Open()
Call Kontrol
End Sub


Şimdi form açıkken hangi nesne aktif olursa olsun, F tuşlarına ve ESC tuşuna basıp Class Module içindeki olayların çalışıp çalışmadığını test edebilirsiniz. --)(
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.



"Milleti kurtaranlar yalnız ve ancak öğretmenlerdir. Öğretmenden, eğiticiden yoksun bir millet, henüz millet namını almak istidadını keşfetmemiştir.
Gençler cesaretimizi takviye ve idame eden sizlersiniz. Siz, almakta olduğunuz terbiye ve irfan ile insanlık ve medeniyetin, vatan sevgisinin, fikir hürriyetinin en kıymetli timsali olacaksınız. Yükselen yeni nesil, istikbal sizsiniz.M.K.ATATÜRK"
Kullanıcı avatarı
Tarkan VURAL
Yönetim Kurulu
 
İleti: 12039
Kayıt: 15 Haz 2008 01:06
Konum: Beylikdüzü-Eyüp-Karlsruhe tarkan@excelvba.net tarkanvural@hotmail.com Office2003TR
Adınız: Tarkan
Soyadınız: VURAL
Bulunduğunuz İl / Semt: İstanbul - Beylikdüzü
Cinsiyet: Bay

Cevap: Class Modul ile UserFormda Her Nesnede F Tuşlarını Ku

İleti M Kubilay Karabulut » 10 Arl 2009 13:53

Emeğine ve bilgine sağlık
" WeWhoAreNotAsOthers"
Kullanıcı avatarı
M Kubilay Karabulut
Yönetim Kurulu
 
İleti: 542
Kayıt: 15 Haz 2008 01:10
Konum: Maltepe/Istanbul
Adınız: Mustafa Kubilay
Soyadınız: KARABULUT
Bulunduğunuz İl / Semt: Maltepe/İstanbul
Cinsiyet: Bay

Cevap: Class Modul ile UserFormda Her Nesnede F Tuşlarını Ku

İleti Erhan Yavuz » 10 Arl 2009 14:26

Eline sağlık.. Tarkan yine döktürmüşsün, birçok kişinin işine yarayacak, program revizesi yapmasına neden olacak bir uygulama... Teşekkürler... [op] [gulumse]
Türkçemizi tam ve doğru kullanmaktan korkmayalım...
Teşekkür etmek Erdemdir. ECYavuz
Kullanıcı avatarı
Erhan Yavuz
Site Forum Yöneticisi
 
İleti: 2286
Kayıt: 15 Haz 2008 01:13
Konum: Etiler / İstanbul
Adınız: Erhan
Soyadınız: Yavuz
Bulunduğunuz İl / Semt: İstanbul / Etiler
Cinsiyet: Bay

Cevap: Class Modul ile UserFormda Her Nesnede F Tuşlarını Ku

İleti Emrah ÇANAKKALE » 10 Arl 2009 15:33

Elinize, emeğinize, bilginize sağlık bu mükemmel oldu. şkşk şkşk şkşk şkşk
Kullanıcı avatarı
Emrah ÇANAKKALE
Forum Moderatörü
 
İleti: 1108
Kayıt: 24 Oca 2009 13:30
Adınız: Emrah
Soyadınız: Çanakkale
Bulunduğunuz İl / Semt: Uşak
Cinsiyet: Bay

Cevap: Class Modul ile UserFormda Her Nesnede F Tuşlarını Ku

İleti rambili » 10 Mar 2010 01:06

Merhaba Arkadaşım;

şirket için oluşturduğum bir karmaşık bir program için revizyon yapacağim. ellerine sağlık. Tam istediğim bigi.... şkşk şkşk şkşk
ÅŸkÅŸk ÅŸkÅŸk ÅŸkÅŸk ÅŸkÅŸk ÅŸkÅŸk ÅŸkÅŸk ÅŸkÅŸk
[TESEKKÜR]
rambili
Standart Üye
 
İleti: 9
Kayıt: 12 Ekm 2009 21:46
Adınız: Ramazan
Soyadınız: Bilgi
Bulunduğunuz İl / Semt: Afyon
Cinsiyet: Bay


Forum Class Module İşlemleri & OCX, DLL

Kimler çevrimiçi

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 1 misafir