• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Makro hatası ile ilgili acil 2 soru

Katılım
28 Temmuz 2004
Mesajlar
21
Okullar yakında açılacak. Acizane ders dağıtım programı hazırladık. Ancak programla ilgili 2 sorunumuz var.
1- Programda ders çakışması olunca uyarı mesajı almak istiyoruz. Aşağıdaki kodu yazınca bazen çalışmıyor, bazen ise her hücrede uyarı mesajı veriyor.
Kod:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Range("B1") > 1 Then MsgBox "Çakışma Var"
End Sub

2- Ders ataması yapılırken herhangi bir ders haftalık ders sayısından fazla ya da eksik yazılırsa uyarı mesajı gelsin istiyoruz. Ã?rneğin J4:S9, J13:S18, AB4:AK9, AB13:AK18 arasına dersler yazılıyor. Bu alanlara bakılarak uyarı mesajı verilecek. Bununla ilgili nasıl bir makro yazılabilir? Ya da yazılabilir mi? Çok acele lazım. Yardımcı olacaklara şimdiden teşekkürler.
 
2.soruya cevap

1-ilgili hücre aralıklarını seçin
2-veri doğrulamaya girin
3-tüm sayıyı seçin
4-ders sayısı en az kaç ise enaz kısmına en fazla kaç ise enfazla kısmına
yaz

Not: aralık içindeki kalan kısım izin verilen ders sayısını gösterir.

İyi çalışmalar
 
Sorumu galiba tam açamamışım. J4:S9, J13:S18, AB4:AK9, AB13:AK18 hücre aralıklarına Türkçe, Matematik, Fen Bilgisi vb ders adları yazılıyor. İstediğim J4:S9 aralığında Matematik dersi 4 defadan fazla yazılmışsa hata iletisi alayım.
 
.1-cevap
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If Target.Value = 5 Then
MsgBox "çakışma"
End If
End If
End Sub

2-Private Sub Worksheet_Change(ByVal Target As Range)
Dim m As Integer
m = WorksheetFunction.CountIf(Range("a1:k10"), "matematik")
If m > 5 Then
MsgBox "matematik dersinin saysı artmıştır"
Else
MsgBox b
End If
End Sub
 
Sayın Karakış, kodlarınızı aşağıdaki gibi uygulamaya çalıştım. Fakat hata verdi.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim m As Integer
m = WorksheetFunction.CountIf(Range("J4:S9,J13:S18,AB4:AK9, AB13:AK18 "), "matematik")
If m > 4 Then
MsgBox "matematik dersinin saysı artmıştır"
End If
End Sub

Þu hatayı veriyor:
Run-time error '1004':
WorksheetFunction sınıfının countIf özelliği alınamıyor


Yardımlarınızı bekliyorum.
 
Sayın mert

o alanı seçerseniz sorun kalmaz
b=worksheetFunction.Countıf(Range("j4:ak28"),"matematik")

okuldaki internetten bağlandığım için biraz kısa oldu
 
dediğiniz doğruymuş. Peki aynı alanda diğer dersleri nasıl saydırmam lazım acaba. Ã?rneğin Türkçe, Fen Bilgisi, Sosyal Bilgiler.....
 
@mert25:

Anladığım kadarıyla ikinci sorunda belli bir alanda 4 adetten fazla aynı veri girildiğinde hata mesajı almak istiyorsun. Bu durumda konuyla ilgili olarak ben sana şöyle bir çözüm önereyim;

1) Ders adlarının olduğu J4:S9 alanını fare ile seç,

2) Bu alan seçili durumdayken Excel'in menülerinden Data >> Validation ( Veri >> Doğrulama) seç,

3) Karşına gelecek pencerede Settings (Ayarlar) sekmesinde Allow (İzin Verilen) kutusunda Custom (İsteğe özel) seç ve aşağıdaki Formula (Formul) kutusuna tıkladıktan sonra bu kutuya aşağıdaki formulü olduğu gibi yaz;

Kod:
=COUNTIF($J$4:$S$9;J4)<5

Eğer Türkçe Office kullanıyorsan aşağıdaki formulü kullan;

Kod:
=EÐERSAY($J$4:$S$9;J4)<5

4) Sözkonusu pencereyi onaylayarak kapat.

5) Þimdi, yukarıda bahsedilen J4:S9 aralığında herhangibir veriyi 4 defadan fazla yazmaya çalıştığında, Excel seni otomatik olarak uyaracak ve veri girişine izin vermeyecektir.

Not: Yukarıda 3ncü madde deki işlemleri yaparken eğer istersen kendi hata mejını da yazabilirsin, işin burası çok da önemli değil....
 
@mert25:

Sorununuzun acil olduğundan bahsetmiştiniz, biz de mümkün olduğunca veya anlayabildiğimiz kadarıyla "acil" olarak cevapladık.

Ama sorununuz çok acil değilmiş herhalde ki, son cevabın işinize yarayıp yaramadığı konusunda bir mesaj yazmadınız.
 
Sayın Raider kusura bakmayın biraz geç oldu. Veri Doğrulama ile hallettim. Biraz zor oldu ama olsun. İlginize Teşekkür ederim.
 
mert25' Alıntı:
......... İlginize Teşekkür ederim.

Rica ederim :keyif:

Ek: Bildiğim kadarıyla bu sitede herhangibir kısıtlama yok. İstediğiniz zaman soru sorabilir, cevap verebilir veya cevap alabilirsiniz.
 
Programı ekte sunamaz mısınız?
Bizde faydalanalım.
 
Geri
Üst