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

Class Module İşlemleri

Bu Örnek İşinize Yaradı Mı ?

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

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

İleti#1)  Tarkan VURAL » 10 Arl 2009 14: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.
Resim
www.tarkanvural.com.tr

İnnâ lillâhi ve innâ ileyhi raciûn
Şüphesiz ki; biz Allah’a âidiz ve vakti geldiğinde O’na döndürüleceğiz.

HasbunAllâhu ve nimel vekîl
Bize Allah yeter. O ne güzel vekildir.


ExcelVBA.NET' e katkıda bulunmak ister misiniz ? O halde BAĞIŞ butonunu tıklayın...
Kullanıcı avatarı
Tarkan VURAL
Yönetim Kurulu
 
Adı Soyadı:Tarkan VURAL
Kayıt: 14 Haz 2008 20:27
Konum: tarkan@excelvba.net
Meslek: LUU, Yazılım Geliştirme Müdürü
Yaş: 45
İleti: 26822
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul - Beylikdüzü

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

İleti#2)  M Kubilay Karabulut » 10 Arl 2009 14:53

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

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

İleti#3)  Erhan Yavuz » 10 Arl 2009 15: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


OSMANLI OYUNU (1402-1566)
http://www.excelvba.net/viewtopic.php?f=41&t=9984

EXCEL-VBA KOD BANKASI PRO.7.0
http://www.excelvba.net/viewtopic.php?f=38&t=3304
Resim
Kullanıcı avatarı
Erhan Yavuz
Site Forum Yöneticisi
 
Adı Soyadı:Erhan Yavuz
Kayıt: 15 Haz 2008 02:13
Konum: Etiler / İstanbul
Meslek: Emekli Sb.
Yaş: 59
İleti: 5695
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul / Etiler

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

İleti#4)  Emrah ÇANAKKALE » 10 Arl 2009 16: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
Site Dostu
 
Adı Soyadı:Emrah Çanakkale
Kayıt: 24 Oca 2009 14:30
İleti: 1224
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Uşak

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

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

İleti#5)  rambili » 10 Mar 2010 02: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]
Kullanıcı avatarı
rambili
Yeni Başlamış
 
Adı Soyadı:Ramazan Bilgi
Kayıt: 12 Ekm 2009 22:46
Konum: yazılım
Meslek: avm
Yaş: 45
İleti: 13
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Afyon

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

İleti#6)  Osman AKYÜZ » 20 Oca 2011 23:52

Merhabalar hocam ;

Bu çalışmanızı listview için nasıl uyarlayabiliriz.
Kod: Tümünü seç
Public WithEvents ListView As MSForms.ListView

Bunu denediğimde "** comple error user-defined type not defined**"" hatası veriyor.Yardımcı olabilirmisiniz.... [TESEKKÜR]
Kullanıcı avatarı
Osman AKYÜZ
Site Dostu
 
Adı Soyadı:OSMAN AKYÜZ
Kayıt: 09 Haz 2010 23:20
Meslek: Üretim Takip Program Yazılımı - Stok/Sipariş/Fatura/Cari Yazılım - İşlemleri - Muhasebe
Yaş: 31
İleti: 645
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: TEKİRDAĞ/SÜLEYMANPAŞA

REKLAM
ETA - Excel Konsolide Raporlama
ETA Excel Personel Entegre Raporu

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

İleti#7)  Haldun Alay » 21 Oca 2011 00:05

Listview nesnesi MsForms kütüphanesinin üyesi değildir.
Referanslarda Microsoft Windows Common Controls kütüphanesini eklemelisiniz. Sonrasında tanım olarak
Kod: Tümünü seç
Dim WithEvents ListView As MSComctlLib.ListView
ile kullanabilirsiniz.
En son Haldun Alay tarafından, 21 Oca 2011 00:10 tarihinde değiştirildi, toplamda 1 değişiklik yapıldı.
Sebep: Kod tanımı eklendi.
Kullanıcı avatarı
Haldun Alay
Site Dostu
 
Adı Soyadı:Haldun Alay
Kayıt: 15 Haz 2008 02:14
Konum: Rakım 0
Meslek: Turizm
Yaş: 48
İleti: 1241
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Aydın/Kuşadası

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

İleti#8)  Osman AKYÜZ » 21 Oca 2011 00:29

HALDUN bey ilginizden dolayı çok teşekkür ederim.İlgili .ocx dosyası bilgisayarımda yok indirip deneyeceğim çok teşekkür ederim [TESEKKÜR] ... [mersi]
Kullanıcı avatarı
Osman AKYÜZ
Site Dostu
 
Adı Soyadı:OSMAN AKYÜZ
Kayıt: 09 Haz 2010 23:20
Meslek: Üretim Takip Program Yazılımı - Stok/Sipariş/Fatura/Cari Yazılım - İşlemleri - Muhasebe
Yaş: 31
İleti: 645
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: TEKİRDAĞ/SÜLEYMANPAŞA

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

İleti#9)  Haldun Alay » 21 Oca 2011 00:37

MSCOMCTL.OCX dosyasını Windows alt dizinlerinde aratın.
Kullanıcı avatarı
Haldun Alay
Site Dostu
 
Adı Soyadı:Haldun Alay
Kayıt: 15 Haz 2008 02:14
Konum: Rakım 0
Meslek: Turizm
Yaş: 48
İleti: 1241
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Aydın/Kuşadası

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

İleti#10)  Osman AKYÜZ » 21 Oca 2011 00:44

İyi akşamlar HALDUN bey evet dosya varmış ama ben tekrar yükledim. Şimdide başlıkta aynı hatayı veriyor.Yardımcı olurmusunuz....
Kod: Tümünü seç
Public Sub ListView_KeyDown(ByVal keycode As MSComctlLib.ReturnInteger, ByVal Shift As Integer
En son Osman AKYÜZ tarafından, 21 Oca 2011 00:53 tarihinde değiştirildi, toplamda 2 değişiklik yapıldı.
Kullanıcı avatarı
Osman AKYÜZ
Site Dostu
 
Adı Soyadı:OSMAN AKYÜZ
Kayıt: 09 Haz 2010 23:20
Meslek: Üretim Takip Program Yazılımı - Stok/Sipariş/Fatura/Cari Yazılım - İşlemleri - Muhasebe
Yaş: 31
İleti: 645
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: TEKİRDAĞ/SÜLEYMANPAŞA

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

İleti#11)  Tarkan VURAL » 21 Oca 2011 00:46

Ek' e genişletilmiş bir örnek daha ekliyorum. Nesneleri de (yoksa) ayrıca indirebilirsiniz. Bu nesneler genelde C:\Windows\System32 klasörü içerisinde bulunur. Kolay gelsin.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Resim
www.tarkanvural.com.tr

İnnâ lillâhi ve innâ ileyhi raciûn
Şüphesiz ki; biz Allah’a âidiz ve vakti geldiğinde O’na döndürüleceğiz.

HasbunAllâhu ve nimel vekîl
Bize Allah yeter. O ne güzel vekildir.


ExcelVBA.NET' e katkıda bulunmak ister misiniz ? O halde BAĞIŞ butonunu tıklayın...
Kullanıcı avatarı
Tarkan VURAL
Yönetim Kurulu
 
Adı Soyadı:Tarkan VURAL
Kayıt: 14 Haz 2008 20:27
Konum: tarkan@excelvba.net
Meslek: LUU, Yazılım Geliştirme Müdürü
Yaş: 45
İleti: 26822
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul - Beylikdüzü

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

İleti#12)  Osman AKYÜZ » 13 May 2011 23:40

Teşekkür ederim TARKAN hocam ve Sn.HALDUN bey başlık kısmınıda
Kod: Tümünü seç
Public Sub ListView_KeyDown(KeyCode As Integer, ByVal Shift As Integer)
Şeklinde düzelttim.Düzelttim ama nasıl tabi ki sizin gibi saygı duyulması gereken bir kişilik Sn.Hakan BEHCAN üstadımızın bir çalışmasından aldım.Alıntı yani ;) herkeze çok teşekkür ediyorum ALLAH(c.c.)iki cihanda hakkımızda hayırlı olanı verir İNŞALLAH selam ve dua ile....


Son güncel tutan Tarkan VURAL, 13 May 2011 23:40.
Kullanıcı avatarı
Osman AKYÜZ
Site Dostu
 
Adı Soyadı:OSMAN AKYÜZ
Kayıt: 09 Haz 2010 23:20
Meslek: Üretim Takip Program Yazılımı - Stok/Sipariş/Fatura/Cari Yazılım - İşlemleri - Muhasebe
Yaş: 31
İleti: 645
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: TEKİRDAĞ/SÜLEYMANPAŞA


Forum Class Module

Online Kullanıcılar

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

cron
Bumerang - Yazarkafe