Userform combobox içinde değişim

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,060
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
Combobox içine yazdığım metin ifadesine göre filtre yapması için aşağıdaki kodu oluşturmuştum.
Bu kod combobox içine bir şeyler yazınca çalışıyor, yalnız burada yazılı metinden karakter silmeye başlayınca bir değişiklik olmuyor

Nasıl bir çözüm önerebilir siniz?


Kod:
Private Sub CmStokAd_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim str As String
'''If Me.CmStokAd = "" Then Exit Sub
Me.CmStokAd.Clear
str = CStr(Trim(Me.CmStokAd.Value))
islem = 1
call KodTest str
End Sub
teşekkürleri
iyi Çalışmalar.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Merhaba.
Şu kodu kullanın.
Kod:
Private Sub ComboBox1_Change()
Dim str As String
'''If Me.CmStokAd = "" Then Exit Sub
Me.CmStokAd.Clear
str = CStr(Trim(Me.CmStokAd.Value))
islem = 1
call KodTest str
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,258
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

İlgili nesnenin Change olayını deneyiniz.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,060
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba.
Şu kodu kullanın.
Kod:
Private Sub ComboBox1_Change()
Dim str As String
'''If Me.CmStokAd = "" Then Exit Sub
Me.CmStokAd.Clear
str = CStr(Trim(Me.CmStokAd.Value))
islem = 1
call KodTest str
End Sub
Hocam bu Change olayını başka bir prosedürde kullanıyorum.

Burada yazdığım metine göre Combobox' a yükleme yapıyor. Comboboxta değişiklik yaptığımda onu başka bir TextBox' a yazdırıyordum.
o nedenle Change olayını kullanmak istemiyorum
Kod:
Set Sht= Sayfa1
Set rng = Sht.Range("B2:B" & X)
k = Application.WorksheetFunction.Match(Ad, rng, 0)
ki = k + 1
Me.txtStokKod.Value = Sht.Range("A" & ki).Value
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Change kodlarının sonuna ekleyebilirsiniz.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Yada KeyDown içinde olabilir.
Kod:
Private Sub CmStokAd_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim str As String
'''If Me.CmStokAd = "" Then Exit Sub
Me.CmStokAd.Clear
str = CStr(Trim(Me.CmStokAd.Value))
islem = 1
call KodTest str
End Sub
 
Son düzenleme:

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Sanırım KeyDown işinizi görür.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,060
Excel Vers. ve Dili
Office 2013 İngilizce
Sanırım KeyDown işinizi görür.
Hocam bu işlemi yaparken, Change olayı çalışmasın istiyorum
her harekette Change olayını döndürmeye çalışıyor
Aşağıdaki gibi bir deneme yaptım ama olmadı,

Kod:
Private Sub CmStokAd_Change()

If Me.CmStokAd.SetFocus = True Then
       Exit Sub
End If
.............................
..................................................

End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,258
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben bu tarz işlemler için bir modülün en tepesine PUBLIC bir değişken tanımlıyorum.

Bunun gibi;

Public Kontrol As Boolean

Bu değişkeni işlem yaptığım kodun sonuna Kontrol = True şeklinde ekliyorum.

Daha sonra mesela bir nesnede işlem yapmayacaksam bu nesnenin örneğin Change olayının ilk satırına aşağıdaki sorguyu yazarak işlem yapmasını engelliyorum. (Blok içinde ihtiyacınıza göre Kontrol = False satırını silebilirsiniz.)

C++:
If Kontrol = True Then
   Kontrol = False
   Exit Sub
End If
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Hocam bu işlemi yaparken, Change olayı çalışmasın istiyorum
her harekette Change olayını döndürmeye çalışıyor
Aşağıdaki gibi bir deneme yaptım ama olmadı,

Kod:
Private Sub CmStokAd_Change()

If Me.CmStokAd.SetFocus = True Then
       Exit Sub
End If
.............................
..................................................

End Sub
Change olayının her zaman çalışmasını istemiyorsunuz bunu anladım.
Peki Change olayının ne zaman çalışmasını istiyorsunuz?
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,060
Excel Vers. ve Dili
Office 2013 İngilizce
Ben bu tarz işlemler için bir modülün en tepesine PUBLIC bir değişken tanımlıyorum.

Bunun gibi;

Public Kontrol As Boolean

Bu değişkeni işlem yaptığım kodun sonuna Kontrol = True şeklinde ekliyorum.

Daha sonra mesela bir nesnede işlem yapmayacaksam bu nesnenin örneğin Change olayının ilk satırına aşağıdaki sorguyu yazarak işlem yapmasını engelliyorum. (Blok içinde ihtiyacınıza göre Kontrol = False satırını silebilirsiniz.)

C++:
If Kontrol = True Then
   Kontrol = False
   Exit Sub
End If
Korhan Hocam teşekkürler,
ben aslında başa döndüm, change olayı içinde iki durumuda çözmeye çalışıyorum.
Şöyle ki imleç ile combobox içinde bir şeyler değiştirirken bir proses çalışacak, bu olay combobox' ın listesini düzenliyor zaten
daha sonra combobox liste' sinden bir değeri seçtiğimde başka bir olay çalışacak.

Kod:
Private Sub CmStokAd_Change()

If Me.CmStokAd.SetFocus = True Then
      Proses-1
else
   Proses-2
End If
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,258
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Küçük bir örnek dosya paylaşabilirmisiniz.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,060
Excel Vers. ve Dili
Office 2013 İngilizce
Örnek dosya ektedir Korhan Hocam
Arkadaşlar Cümleten iyi bayramlar
Korhan Hocam dosyaya bakma imkanınız oldu mu?
Herkese Sevdiklerinizle birlikte sağlıklı, huzurlu, mutlu nice bayramlar dilerim.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,060
Excel Vers. ve Dili
Office 2013 İngilizce
Teşekkürler Korhan Hocam
Bu arada "Key_Press" olayında alternatif çözümler üretme peşindeydim, bu çözüm pratik oldu.
tekrar teşekkürler, iyi bayramlar dilerim.
 
Üst