- Katılım
- 22 Mayıs 2009
- Mesajlar
- 1,017
- Excel Vers. ve Dili
- Office 2003
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Sub Kura_Cek()
Dim ShLst As Worksheet, _
ShFrm As Worksheet, _
Adt As Integer, _
i As Integer, _
Son As Integer, _
CekNo As Integer, _
c As Range
Application.ScreenUpdating = False
Set ShLst = Sheets("Liste")
Set ShFrm = Sheets("Form")
i = ShLst.Cells(Rows.Count, "B").End(3).Row
ShFrm.Range("C10:F" & i).ClearContents
Adt = ShFrm.Range("F1")
Son = ShLst.Cells(Rows.Count, "B").End(3).Row - 1
Randomize (CDbl(Now))
i = 1
Do While Not i > Adt
Do
CekNo = Int((Son * Rnd) + 1)
Set c = ShFrm.Range("C10:C" & 9 + i).Find(ShLst.Cells(CekNo + 1, "B"), LookIn:=xlValues, LookAt:=xlWhole)
Loop While Not c Is Nothing
ShFrm.Cells(i + 9, "C") = ShLst.Cells(CekNo + 1, "B")
ShFrm.Cells(i + 9, "D") = ShLst.Cells(CekNo + 1, "C")
i = i + 1
Loop
ShFrm.Range("C10:D" & 8 + i).Sort Key1:=ShFrm.[C1]
Application.ScreenUpdating = True
End Sub
Sub Aktar()
Dim i As Integer, _
ShFrm As Worksheet
Set ShFrm = Sheets("Form")
Application.ScreenUpdating = False
ShFrm.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Kura-" & ShFrm.Range("F1")
ActiveSheet.DrawingObjects.Delete
ShFrm.Select
i = ShFrm.Cells(Rows.Count, "B").End(3).Row
ShFrm.Range("C10:F" & i).ClearContents
Application.ScreenUpdating = True
End Sub
Üstadlarım;
bayağı bir kura çekme yaptım Mükerrer isim oluyor listeler arasında.Bunun bir çözümü varmıdır?
Muhtemelen size Hocam. Çünkü siz sayfa adını hücre değerine göre vermişsiniz. Aynı değerde birden fazla kura çekiminde hata veriyor.
Hocam yeni sayfa ekliyorusunuz. Orda bir sorun. Örneğin iki kez aynı sayıda öğretmen görev alırsa hata veriyor.
Hocam benim bahsettiğim mükerrer kişi adlarında değil, sayfa adlarında. Aynı adı taşıyan iki sayfa oluşturuyor. Buda hata veriyor.
Sub Kura_Cek()
Dim ShLst As Worksheet, _
ShFrm As Worksheet, _
Adt As Integer, _
i As Integer, _
Son As Integer, _
CekNo As Integer, _
Bos As Integer, _
Durum As Boolean
Application.ScreenUpdating = False
Set ShLst = Sheets("Liste")
Set ShFrm = Sheets("Form")
i = ShLst.Cells(Rows.Count, "B").End(3).Row
ShFrm.Range("C10:F" & i).ClearContents
Adt = ShFrm.Range("F1")
Son = ShLst.Cells(Rows.Count, "B").End(3).Row - 1
Bos = Application.WorksheetFunction.CountBlank(ShLst.Range("D2:D" & i))
If Adt > Bos Then
MsgBox "Boşta Kalan Görevli Sayısı : " & Bos & Chr(10) & Chr(10) & _
" Sizin İstediğiniz Görevli Adedi : " & Adt & Chr(10) & Chr(10) & _
"İSTEDİĞİNİZİ GERÇEKLEŞTİREMİYECEĞİM....."
Exit Sub
End If
Randomize (CDbl(Now))
i = 1
Do While Not i > Adt
Durum = False
Do
CekNo = Int((Son * Rnd) + 1)
If ShLst.Cells(CekNo + 1, "D") = "" Then
Durum = True
ShLst.Cells(CekNo + 1, "D") = [B][COLOR=red]ShFrm.Range("D3")[/COLOR][/B]
End If
' Set c = ShFrm.Range("C10:C" & 9 + i).Find(ShLst.Cells(CekNo + 1, "B"), LookIn:=xlValues, LookAt:=xlWhole)
Loop While Not Durum = True
ShFrm.Cells(i + 9, "C") = ShLst.Cells(CekNo + 1, "B")
ShFrm.Cells(i + 9, "D") = ShLst.Cells(CekNo + 1, "C")
i = i + 1
Loop
ShFrm.Range("C10:D" & 8 + i).Sort Key1:=ShFrm.[C1]
MsgBox "KURA ÇEKİLMİŞTİR...", vbInformation, "Necdet YEŞERTENER --> excel.web.tr"
Application.ScreenUpdating = True
End Sub
Sub Aktar()
Dim i As Integer, _
Adet As Integer, _
ShFrm As Worksheet, _
Sh As Worksheet
Set ShFrm = Sheets("Form")
Application.ScreenUpdating = False
For Each Sh In Worksheets
If Sh.Name Like "Kura*" Then Adet = Adet + 1
Next Sh
Adet = Adet + 1
ShFrm.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Kura-" & Adet
ActiveSheet.DrawingObjects.Delete
ShFrm.Select
i = ShFrm.Cells(Rows.Count, "B").End(3).Row
ShFrm.Range("C10:F" & i).ClearContents
Application.ScreenUpdating = True
End Sub
Necdet abi
Ellerine sağlık Zahmet verdim size Özür dilerim.
Yardımlarınızı esirgemediğiniz için TEŞEKKÜR EDERİM.
Allah Razı Olsun
Necdet abi;
21//01/2012 - 22/01/2012 tarihleri arasında Açık Öğretim Lisesi Sınavı var.
üç dört işin arasındabBu sınava görevlendirme yapabilmek karmaşık bir hal alıyordu. Hata vermemek mümkün değildi. En son eklediğiniz makro ile "Allah Ahiretinizi cennet eyleye inşallah" bu yükün altında rahatlıkla çıkacağım. Program da mükerrer olayı göremedim. Şu an için mükemmel abi. İstediğimden de güzel olmuş.
Zamanınızı bana ayırdınız Allah razı olsun Necdet abi. Çok çok sağolasın abi
Necdet abi ;
Kızmazsanız bir değişiklik isteyebilir miyim.
Liste sayfasında durum sütununa görevlendirildi yerine Form sayfasında yer alan sınav binasının adı yazılabilir mi?
Örneğin :Liste sayfasında yer alan
adı soyadı
Adı Soyadı 006
Görev Yeri
Görev Yeri 006
Durum
(Form sayfasında Sınav Binasının Adı kısmında ne yazılı ise onu yazsa)
Böyle mükerrer kontrolü yapsa olur mu?