IsNothing problemi

Class Module İşlemleri

IsNothing problemi

İleti#1)  hsayar » 27 Şub 2010 14:43

Bir Class Module düzenlemeye çalışıyorum ...
Ve sayfanın en üstünde;
Kod: Tümünü seç
Private WithEvents e_TextBox        As MSForms.TextBox
Private WithEvents e_ComboBox       As MSForms.ComboBox   'ComboBox


Satırları var,

Class Prosodürde yapmak istediğim denetim
Kod: Tümünü seç
Sub Prosodür()
   eğer e_textbox nothing  değilse
     Set m_objForm.AktifKontrol = e_TextBox
   eğer e_combobox nothing  değilse
     Set m_objForm.AktifKontrol = e_TextBox
...
vs.


Nasıl bir denetim önerirsiniz?

Gönderilmiş resmi tam boy görmek istiyorsanız, eklentinin üzerini tıklayınız.


Felaket Başa Gelmeden Evvel Önleyici ve Koruyucu Tedbirler Düşünmek Lazım.

Felaket Geldikten Sonra Dövünmenin Yararı Yoktur.

Mustafa Kemal ATATÜRK
Kullanıcı avatarı
hsayar
Site Dostu
 
Adı Soyadı:Hüseyin SAYAR
Kayıt: 18 Eyl 2008 09:30
Meslek: Çalışma Ekonomisti
Yaş: 40
İleti: 600
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Edirne/İpsala

Cevap: IsNothing problemi

İleti#2)  Tarkan VURAL » 27 Şub 2010 15:37

Class Kodları ;
Kod: Tümünü seç
Public WithEvents e_TextBox        As MSForms.TextBox
Public WithEvents e_ComboBox       As MSForms.ComboBox


UserForm Kodları ;
Kod: Tümünü seç
Private Evn() As New Class1

Private Sub UserForm_Activate()

For Each n In UserForm1.Controls
    a = a + 1
    ReDim Preserve Evn(1 To a)
       
        If TypeName(n) = "TextBox" Then
            Set Evn(a).e_TextBox = n
        End If
       
        If TypeName(n) = "ComboBox" Then
            Set Evn(a).e_ComboBox = n
        End If
           
Next
If Evn(1).e_ComboBox Is Nothing Then MsgBox "UserForm Üzerinde ComboBox Bulunamadı"
If Evn(1).e_TextBox Is Nothing Then MsgBox "UserForm Üzerinde ComboBox Bulunamadı"
End Sub


Eklediğim dosyadan da örneği inceleyebilirsiniz. Form üzerinde nesne türü yoksa If denetimi isteğinize göre sonuç üretir.
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 18:27
Konum: @tarkanvural73
Meslek: LUU, Database Expert, Senior Software Specialist, Developer
Yaş: 46
İleti: 27044
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul - Beylikdüzü

Cevap: IsNothing problemi

İleti#3)  hsayar » 27 Şub 2010 15:51

Emekleriniz için teşekkürler, ancak başka türlü hallettim, çünkü bana kontrol edeceği yerde nesneler tanımlı ama değer atanmamıştı classın içine aşağıdaki siteden aldığım KTF'yi koydum.
http://www.bigresource.com/VB-IsNothing ... 4hifl6dtB7
Böylelikle combo ve textboxlarda sağ tuş menüsü gelsin yordamında bulunan 4 class ı iki ye düşürdüm.

Tabi Her Çalışma kitabına koyma zorunluluğundanda kurtulup XLA yapabilirsem tadından yenmeyecek :)


Kod: Tümünü seç
Private Sub e_SagTus()
    If Not IsNothing(e_TextBox) Then
    'Textboxta Farenin sağ tuşuna tıklanıca çağır
     Set m_objForm.AktifKontrol = e_TextBox
      With m_objCBar
        .Controls(1).Enabled = CBool(e_TextBox.SelLength <> 0)
        .Controls(2).Enabled = CBool(e_TextBox.SelLength <> 0)
        .Controls(3).Enabled = e_TextBox.CanPaste
        .Controls(4).Enabled = CBool(Len(e_TextBox.Text) <> 0)
        .Controls(5).Enabled = CBool(Len(e_TextBox.Text) <> 0)
        .Controls(6).Enabled = True
        .ShowPopup
      End With
    ElseIf Not IsNothing(e_ComboBox) Then
    ' MsgBox "e_ComboBox Nesne var"
    'ComboBoxta Farenin sağ tuşuna tıklanıca çağır
    'Eğer ComboStil açlılır liste ise Kes, Yapıştır , Tümünü Sil; Pasif kılınır.
      Set m_objForm.AktifKontrol = e_ComboBox
      With m_objCBar
        'Kes
        .Controls(1).Enabled = CBool((Len(e_ComboBox.Text) <> 0) And (e_ComboBox.Style <> fmStyleDropDownList))
        'Kopyala
        .Controls(2).Enabled = CBool(e_ComboBox.SelLength <> 0)
        'Yapıştır
        .Controls(3).Enabled = CBool(e_ComboBox.CanPaste) And (e_ComboBox.Style <> fmStyleDropDownList) 'e_ComboBox.CanPaste
        'Tümünü Sil
        .Controls(4).Enabled = CBool((Len(e_ComboBox.Text) <> 0) And (e_ComboBox.Style <> fmStyleDropDownList))
        'Tümünü Seç
        .Controls(5).Enabled = CBool(Len(e_ComboBox.Text) <> 0)
        'Hakkında
        .Controls(6).Enabled = True
        .ShowPopup
      End With
    End If
End Sub
Kod: Tümünü seç

Public Function IsNothing(Object As Object) As Boolean
On Error Resume Next
    Err.Clear
    Object.Properties(0) = Object.Properties(0)

    If Err.Number = 91 Then 'object variable or with block variable not set
        IsNothing = True
    Else
        IsNothing = False
    End If
End Function

Felaket Başa Gelmeden Evvel Önleyici ve Koruyucu Tedbirler Düşünmek Lazım.

Felaket Geldikten Sonra Dövünmenin Yararı Yoktur.

Mustafa Kemal ATATÜRK
Kullanıcı avatarı
hsayar
Site Dostu
 
Adı Soyadı:Hüseyin SAYAR
Kayıt: 18 Eyl 2008 09:30
Meslek: Çalışma Ekonomisti
Yaş: 40
İleti: 600
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Edirne/İpsala

Cevap: IsNothing problemi

İleti#4)  hsayar » 27 Şub 2010 17:06

Son Mesaja çalışma eklendi.
viewtopic.php?f=78&t=797
Felaket Başa Gelmeden Evvel Önleyici ve Koruyucu Tedbirler Düşünmek Lazım.

Felaket Geldikten Sonra Dövünmenin Yararı Yoktur.

Mustafa Kemal ATATÜRK
Kullanıcı avatarı
hsayar
Site Dostu
 
Adı Soyadı:Hüseyin SAYAR
Kayıt: 18 Eyl 2008 09:30
Meslek: Çalışma Ekonomisti
Yaş: 40
İleti: 600
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Edirne/İpsala

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

Forum Class Module

Online Kullanıcılar

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

Bumerang - Yazarkafe