Ömer BARAN
Uzman
- Katılım
- 8 Mart 2011
- Mesajlar
- 12,986
- Excel Vers. ve Dili
- Office 2013 ( 32 bit ) TÜRKÇE
- Altın Üyelik Bitiş Tarihi
- (18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Herkese merhabalar!...
Belgemi UserFormlarla yönetmeye çalışıyorum.
UserFormumdaki kullanılacak ilk nesne ComboBox301 ve
bunun kaynağı Properties kısmından ayarlanarak Sayfa1'deki bir
hücre aralığı olarak tanımlı.
Ardından kullanılacak ComboBoxların adları ise
ComboBox1, ComBox2, ........ComboBox20'ye kadar ve
bunların veri kaynağı ise Properties kısmından ayarlanarak
belgemin Sayfa2'deki bir hücre aralığı olarak tanımlı.
ComboBoxların tümünün bulunduğu UserFormdaki ilgili kod aşağıdaki gibi.
ComboBox1 .....ComboBox20'ye kadar olanların kontrolü için hazırlanmış bir
Class Modülden dolayı sorun yaşıyorum.
Class Modüldeki kod aşağıdaki gibi.
İlgilenen arkadaşlara teşekkür ederim.
Belgemi UserFormlarla yönetmeye çalışıyorum.
UserFormumdaki kullanılacak ilk nesne ComboBox301 ve
bunun kaynağı Properties kısmından ayarlanarak Sayfa1'deki bir
hücre aralığı olarak tanımlı.
Ardından kullanılacak ComboBoxların adları ise
ComboBox1, ComBox2, ........ComboBox20'ye kadar ve
bunların veri kaynağı ise Properties kısmından ayarlanarak
belgemin Sayfa2'deki bir hücre aralığı olarak tanımlı.
ComboBoxların tümünün bulunduğu UserFormdaki ilgili kod aşağıdaki gibi.
İlk kullanılacak 301 no'lu olan ComboBox dışındaki,Option Explicit
Dim dizi() As New Class1
Private Sub UserForm_Initialize()
Dim a As Integer, Obj As Control
For Each Obj In Me.Controls
If TypeOf Obj Is MSForms.ComboBox Then
a = a + 1
ReDim Preserve dizi(1 To a)
Set dizi(a).dizi = Obj
End If
Next Obj
Set Obj = Nothing
End Sub
ComboBox1 .....ComboBox20'ye kadar olanların kontrolü için hazırlanmış bir
Class Modülden dolayı sorun yaşıyorum.
Class Modüldeki kod aşağıdaki gibi.
Class Modülde veya Userform kodlarında nasıl bir değişiklik yapmalıyım.Option Explicit
Public WithEvents dizi As MSForms.ComboBox
Private Sub dizi_Change()
Dim ad As String, no As Integer, Obj As Control, deg
ad = dizi.Name
no = Split(ad, "ComboBox")(1)
If dizi.Value = "" Then Exit Sub
If no = 300 Then Exit Sub
If no = 2 Then no = 301
If UserForm3.Controls("ComboBox" & no - 1) = "" Then
MsgBox "Bir Önceki Boş Geçilmez", vbCritical
dizi.Value = ""
UserForm3.Controls("ComboBox" & no - 1).SetFocus
Exit Sub
End If
deg = dizi.Value
For Each Obj In UserForm3.Controls
If TypeOf Obj Is MSForms.ComboBox Then
If Obj.Name <> dizi.Name Then
If Obj.Value = deg Then
MsgBox "Bu değer daha önce girilmiş"
dizi.Value = ""
Exit Sub
End If
End If
End If
Next Obj
End Sub
İlgilenen arkadaşlara teşekkür ederim.