Excel Vba Forum - Excelce.Net

SORU ve CEVAPLAR (Yazılabilir) => Microsoft Excel, Vba, Makro, Formül vb. Soruları => Çözülen Excel, Vba, Makro, Formül vb. Soruları => Konuyu başlatan: serul - 13 Aralık 2010, 13:54:35

Başlık: Dershane Kayıt Form / program
Gönderen: serul - 13 Aralık 2010, 13:54:35
Arkadaşlar kuruma yeni kayıtlarımız başlamak üzere, otomasyon programımız çok çetrefilli ihtiyacımızı karşılamıyor. Ekte sayfalar üzerine açıklamalar yazmaya çalıştım. İlgilenebilir misiniz?

[Forum yazılım güncelleme esnasında sorun oluştuğundan eklendi silinmiştir.]
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 14 Aralık 2010, 16:30:11
Arkadaşlar rar dosyası 7 kez indirilmiş olmasına karşın kimse birşey yazmadı. Fonksiyonlar yardımı ile bişeyler yapmaya çalıştım bi kontrol edermisiniz ?

[Forum yazılım güncelleme esnasında sorun oluştuğundan eklendi silinmiştir.]
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Hüseyin Çoban - 14 Aralık 2010, 17:06:06
Merhaba,

Açılan liste ve fiyat getirme işlemini yaptım.
Ekteki dosyayı inceler misiniz.


[Forum yazılım güncelleme esnasında sorun oluştuğundan eklendi silinmiştir.]
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 14 Aralık 2010, 17:15:40
Taksit tutarı kısmındaki EĞER döngümü kontrol edebilirmisiniz? Elle girdiğim tarih değerinde tutarsızlık yapıyor. Bulunduğumuz yılın (2010-2011-..)
Haziran ayında daha küçük bir tarihte isek son tutarı 12 taksite kadar bölebilmeli eğer haziran ağustos arasında ise 10 taksite, diğerinde 8 taksite kadar bölme seçeneği ekleyebilirmiyiz? Bu seçenek onaylandıktan sonra ödeme tablosuna ve MUHASEBE TAKİP sayfasına taksitler otomatik doldurulabilir mi?
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 15 Aralık 2010, 12:08:20
Makro ile bir şeyler yaptım...


(Yeni hali eklendiğinden buradaki ek silinmiştir.)
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 15 Aralık 2010, 13:02:22
Bülent Bey : EĞER fonksiyonuna bağlı olarak taksit sayısını açılan pencereden seçme ihtimalimiz olur mu ?
Bunu form şeklinde tasarlasak bizim için bir zararı var mıdır ?
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 15 Aralık 2010, 14:12:52
Bülent Bey : EĞER fonksiyonuna bağlı olarak taksit sayısını açılan pencereden seçme ihtimalimiz olur mu ?
Olur. Yeni hali ekte...

Bunu form şeklinde tasarlasak bizim için bir zararı var mıdır ?
Nasıl isterseniz o şekilde tasarlayıp kullanabilirsiniz tabi ki, neden zararı olsun.

[Forum yazılım güncelleme esnasında sorun oluştuğundan eklendi silinmiştir.]
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 15 Aralık 2010, 14:20:53
Güzel olmuş Bülent Bey ! Elinize sağlık. Biraz tarif ile ben bunu forma çevirebilir miyim ? Aradan bende biras öğrenmiş olurum. Her seferinde arkadaşları yormak istemem.
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 15 Aralık 2010, 15:58:49
Çevirebilirsiniz tabi... Başkaları yapabiliyorsa, siz de yaparsınız.  ;)
Deneyin bakalım.
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 26 Aralık 2010, 22:49:59
Sorduğunuzu 2 şekilde yapabilirsiniz:

1-RowSource ile arada sütun gizleyerek:
Kod: [Seç]
Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 6  '--> 6 sütun alınır
ListBox1.ColumnWidths = "60;0;0;0;0;60"  ' --> ilk ve son sütunların genişlikleri 60, diğerleri 0 olunca sadece 60'lar görünecek.
ListBox1.RowSource = "gruplar!A2:F10"  '--> A2:F10 arasını alıyoruz.


2-AddItem yöntemi:
Kod: [Seç]
Private Sub UserForm_Initialize()
ListBox1.Clear
ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = "60;60"

For i = 2 To 12 ' A2'den A12'ye kadar olanları alacağımız döngü başlangıcı

ListBox1.AddItem  'Listbox'a satır satır veri ekleyeceğiz...

    ListBox1.List(i - 2, 0) = Range("A" & i)  ' Listbox'un ilk sütununa A sütunundan
    ListBox1.List(i - 2, 1) = Range("F" & i)  ' Listbox'un ikinci sütununa F sütunundan veri alıyoruz
   
Next i

End Sub
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 26 Aralık 2010, 22:55:01
Bir ComboBox tanımladım az önceki ListBox ı ComboBox yaptım. Ben bu ComboBox da herhangi bir veriyi seçtiğimde  seçim satırındaki diğer bilgiyi Label veya herhangi bir kutuya otomatik yazdırmaya çalışıyorum. Ne yazabilirim ?

Kod: [Seç]
Private Sub ComboBox1_Change()
Label1.Caption = ComboBox1.List(ComboBox1.ListIndex, 0) ' Combo'dan seçilenin ilk sütunu Label1'in Caption'una
TextBox1.Value = ComboBox1.List(ComboBox1.ListIndex, 1) ' Combo'dan seçilenin ikinci sütunu Textbox1'in Value'sine
End Sub

Listbox ve Combobox ilk index'leri 0'dan başlar.
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 26 Aralık 2010, 23:18:33
Bülent Bey taksit sayısını seçebilmek için combobox oluşturdum.

Private Sub UserForm_Initialize()
ComboBox1.Clear
ComboBox1.ColumnCount = 1
ComboBox1.ColumnWidths = "15"
ListBox1.Clear
ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = "60;0"
ComboBox1.RowSource = "gruplar!E2:E15"

For i = 2 To 12

ListBox1.AddItem

    ListBox1.List(i - 2, 0) = Range("gruplar!A" & i)
    ListBox1.List(i - 2, 1) = Range("gruplar!C" & i)
   
Next i

End Sub

Private Sub ListBox1_Change()
TextBox6.Value = ListBox1.List(ListBox1.ListIndex, 1)
End Sub

ben ComboBox1 i belli bir şarta bağlı olarak E5 e kadar veya E9 a kadar kısımdan seçtirebilir miyim ?
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 27 Aralık 2010, 08:55:01
Bülent Bey şimdi çalışmamda bir matematiksel işlem yazmak istiyorum. Basit bir matematiksel işlem : Label6 da yazılı değeri comboBox2 de seçilen değere bölüp sonucu AYLIK label e yazdırmak istiyorum ?!
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 27 Aralık 2010, 09:01:17
Ben ComboBox1 i belli bir şarta bağlı olarak E5 e kadar veya E9 a kadar kısımdan seçtirebilir miyim ?

Bunu yaptınız mı?

Bülent Bey şimdi çalışmamda bir matematiksel işlem yazmak istiyorum. Basit bir matematiksel işlem : Label6 da yazılı değeri comboBox2 de seçilen değere bölüp sonucu AYLIK label e yazdırmak istiyorum ?!

Nesnelerin değerlerinin varsayılan biçimleri metindir. Matematiksel işlem yapabilmek için sayıya çevirmek gerekiyor;
Kod: [Seç]
Private Sub CommandButton1_Click()
lblAYLIK.Caption = CDbl(Label6) / CDbl(ComboBox2)
End Sub
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 27 Aralık 2010, 09:07:15
Bunu yaptınız mı?


yok onu yapmadım onu ihtiyaçtan değilde meraktan sormuştum. Kodlardaki CDbl metni matematiksel değere çeviriyor demekki. Peki kodun başındaki lbl nin işlevi nedir ?
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 27 Aralık 2010, 09:15:13

(run time error 424 )
Private Sub CommandButton1_Click()
lblAYLIK.Caption = CDbl(Label6) / CDbl(ComboBox2)
End Sub
Yanlış var mı ?

[Forum yazılım güncelleme esnasında sorun oluştuğundan eklendi silinmiştir.]
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 27 Aralık 2010, 09:17:25
yok onu yapmadım onu ihtiyaçtan değilde meraktan sormuştum.
Yapılabilir. If şartı ile kriter belirlenebilir.


Kodlardaki CDbl metni matematiksel değere çeviriyor demekki.

Evet. Forumda değişkenler konusunu inceleyebilirsiniz.


Peki kodun başındaki lbl nin işlevi nedir ?

Label'e verilen isim.
Yukarıdaki mesajınızda AYLIK label ifadesini kullandığınız için ben de lblAYLIK olarak isimlendirdim.
Kullanım kolaylığı için kontroller isimlendirilirken başlarına türünü belirten ifade konması daha faydalı oluyor.

Label için "lbl", Textbox için "txt", CommandButton için "cmd", Combobox için "cb" gibi...
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 27 Aralık 2010, 09:19:40
(run time error 424 )
Private Sub CommandButton1_Click()
lblAYLIK.Caption = CDbl(Label6) / CDbl(ComboBox2)
End Sub
Yanlış var mı ?

Label'inizin adı nedir?
AYLIK mı lblAYLIK mı?

Düzeltirseniz çalışacaktır.
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 27 Aralık 2010, 09:24:19
Bu Formüle OptionButton1 seçili olduğunda %15 iskonto yaptırmak istiyorum hangi kodu eklemeliyim ?
Forumda değişkenler adında aratma yaptırdım bilgiye ulaşamadım  :-[
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 27 Aralık 2010, 09:34:50
Forumda değişkenler adında aratma yaptırdım bilgiye ulaşamadım  :-[
Haklısınız. Bölümü açmış, ancak henüz içeriğini doldurmamışım.  :(

Bu Formüle OptionButton1 seçili olduğunda %15 iskonto yaptırmak istiyorum hangi kodu eklemeliyim ?

OptionButton yerine CheckBox kullanırsanız işaretleyip, işareti kaldırmak mümkün olacaktır.

Şu şekilde de indirim hesabını yaptırabilirsiniz:

Kod: [Seç]
Private Sub CommandButton1_Click()
If CheckBox1.Value = True Then
    AYLIK.Caption = (CDbl(Label6) / CDbl(ComboBox2)) - ((CDbl(Label6) / CDbl(ComboBox2)) * 15 / 100)
Else
    AYLIK.Caption = CDbl(Label6) / CDbl(ComboBox2)
End If
End Sub
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 27 Aralık 2010, 10:36:04
Seçilen taksit sayısına göre farklı indirim seçenekleri oluşturabilmek için
Kod: [Seç]
Private Sub CommandButton1_Click()
If ComboBox2.Value = 2 Then
    AYLIK.Caption = (CDbl(Label6) / CDbl(ComboBox2)) - ((CDbl(Label6) / CDbl(ComboBox2)) * 15 / 100)
    Label13.Caption = (CDbl(Label6)) - (CDbl(Label6) * 15 / 100)
Else
    AYLIK.Caption = CDbl(Label6) / CDbl(ComboBox2)
    Label13.Caption = "İNDİRİM YAPILAMAZ "
End If
End Sub
yazdım çalışıyor. Okuldan hatırladığım kadarıyla between denilen aralık tanımlama komutları vardı. Tarihe göre excelimde aylık taksit sayısı çıkıyor ve combobox2 bunu listeliyor. Yazdığım şart sadece 2 taksitte işliyor. Farklı if şartlarını içiçemi kullanmalıyım ?
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 27 Aralık 2010, 11:00:48
İçiçe IF veya Select Case kullanabilirsiniz.

Örnek:

Alıntı yapılan: Excel Yardımı
Dim Number
Number = 8    ' Initialize variable.
Select Case Number    ' Evaluate Number.
Case 1 To 5    ' Number between 1 and 5, inclusive.
    Debug.Print "Between 1 and 5"
' The following is the only Case clause that evaluates to True.
Case 6, 7, 8    ' Number between 6 and 8.
    Debug.Print "Between 6 and 8"
Case 9 To 10    ' Number is 9 or 10.
Debug.Print "Greater than 8"
Case Else    ' Other values.
    Debug.Print "Not between 1 and 10"
End Select
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 27 Aralık 2010, 18:40:50
Bülent Bey hazırlamış olduğunuz değişkenler sayfasını inceledim. Elinize sağlık.
Kod: [Seç]
Private Sub UserForm_Initialize()
Label4 = FormatDateTime(Now, vbShortDate)
ComboBox1.Clear
ComboBox1.ColumnCount = 2
ComboBox1.ColumnWidths = "40;0"
ComboBox1.RowSource = "GRUPLAR!A2:B10"
ComboBox2.ColumnCount = 1
ComboBox2.ColumnWidths = "8"
ComboBox2.RowSource = "GRUPLAR!D2:D16"
Dim tarh As Date
Dim TextBox4 As Byte
Dim TextBox3 As Byte
End Sub

tarh benim label kısmım. Bu tarh kısmını Haziran ile karşılaştırıp sonuca göre If döngüsüne ekleyeceğim. Tarihi nasıl karşılaştırabiliriz ?
TextBox3 ve TextBox4 e sadece rakam girilmesini Dim ..........As Byte ile engelleyemiyorum (Çünkü bu kod excelin o labelda yazılanı tanıması için) ?
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 28 Aralık 2010, 08:34:53
Serkan Bey,
Siz yapmak istediğinizi bana satır satır ifade edin, ben kodlamasına yardımcı olayım.
Sonra dosyanızda uygulamayı deneyin...
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 28 Aralık 2010, 09:24:47
Forma Veli,Öğrenci,İletişim bilgileri girilecek. Yazı olan yerlere sadece yazı, rakam olacak yerlere sadece rakam yazılabilmeli. Hesaplama butonu istediğim gibi çalışıyor. Kaydet butonu tıklandığında DATA sayfasına aynı satıra veli,öğrenci ad-soyad, veli cep telefonu ve kaç taksit ise taksit ödeme miktarları ve tarihleri aylık sütunlara yerleştirmek istiyorum.

[Forum yazılım güncelleme esnasında sorun oluştuğundan eklendi silinmiştir.]
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 28 Aralık 2010, 13:34:34
Formunuza istediğiniz alanları/nesneleri ekleyip, dosyanızın son halini foruma ekler misiniz? Onun üzerinden gidelim.
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 28 Aralık 2010, 14:18:07
Peki
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 28 Aralık 2010, 15:09:34
DATA sayfasının 1. satırına şu başlıkları yazın:

Alıntı
VELİ  ADI SOYADI   
ÖĞRENCİ ADI SOYADI   
VELİ CEP TELEFONU   
VELİ EV TELEFONU   
SINIFI   
TUTAR   
TAKSİT ADEDİ   
TAKSİT TUTARI

KAYDET düğmesine şu kodları atayın:

Alıntı
Private Sub KAYDT_Click()
Dim say As Long
say = ThisWorkbook.Worksheets("DATA").Range("A65530").End(xlUp).Row + 1
ThisWorkbook.Worksheets("DATA").Range("A" & say) = TextBox2 ' VELİ ADI
ThisWorkbook.Worksheets("DATA").Range("B" & say) = TextBox1 ' ÖĞRENCİ ADI
ThisWorkbook.Worksheets("DATA").Range("C" & say) = TextBox3 ' VELİ CEP TEL
ThisWorkbook.Worksheets("DATA").Range("D" & say) = TextBox4 ' VELİ EV TEL
ThisWorkbook.Worksheets("DATA").Range("E" & say) = ComboBox1 ' SINIFI
ThisWorkbook.Worksheets("DATA").Range("F" & say) = CDbl(Label6) * 1 ' TUTAR
ThisWorkbook.Worksheets("DATA").Range("G" & say) = CDbl(ComboBox2) * 1 ' TAKSİT ADEDİ
ThisWorkbook.Worksheets("DATA").Range("H" & say) = CDbl(AYLIK.Caption) * 1 ' TAKSİT TUTARI
End Sub


SAYI ve METİN kontrolü için ilgili nesnelere yazılacak kodlar:

Kod: [Seç]
Private Sub TextBox1_Change()
If IsNumeric(VBA.Right(TextBox1, 1)) Then TextBox1 = VBA.Left(TextBox1, Len(TextBox1) - 1)
End Sub

Kod: [Seç]
Private Sub TextBox2_Change()
If IsNumeric(VBA.Right(TextBox2, 1)) Then TextBox2 = VBA.Left(TextBox2, Len(TextBox2) - 1)
End Sub

Kod: [Seç]
Private Sub TextBox3_Change()
If Not IsNumeric(VBA.Right(TextBox3, 1)) Then TextBox3 = VBA.Left(TextBox3, Len(TextBox3) - 1)
End Sub

Kod: [Seç]
Private Sub TextBox4_Change()
If Not IsNumeric(VBA.Right(TextBox4, 1)) Then TextBox4 = VBA.Left(TextBox4, Len(TextBox4) - 1)
End Sub
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 28 Aralık 2010, 15:24:04
Bülent Bey yazdıklarınızı uyguladım güzel oldu. DATA sayfasına taksitle kayıt tarihinden itibaren 1 ay sonra başlayacak şekilde doldurmak istiyorum. DATA kısmına ayları ekledim
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 28 Aralık 2010, 15:47:02
Ay'ları Aralık'tan başlatıp, kodları şu şekilde değiştirin:

Alıntı
Private Sub KAYDT_Click()
Dim say As Long
Dim taksitler As Integer
Dim bugun As Date, sonrakiay As Date

say = ThisWorkbook.Worksheets("DATA").Range("A65530").End(xlUp).Row + 1
ThisWorkbook.Worksheets("DATA").Range("A" & say) = TextBox2 ' VELİ ADI
ThisWorkbook.Worksheets("DATA").Range("B" & say) = TextBox1 ' ÖĞRENCİ ADI
ThisWorkbook.Worksheets("DATA").Range("C" & say) = TextBox3 ' VELİ CEP TEL
ThisWorkbook.Worksheets("DATA").Range("D" & say) = TextBox4 ' VELİ EV TEL
ThisWorkbook.Worksheets("DATA").Range("E" & say) = ComboBox1 ' SINIFI
ThisWorkbook.Worksheets("DATA").Range("F" & say) = CDbl(Label6) * 1 ' TUTAR
ThisWorkbook.Worksheets("DATA").Range("G" & say) = CDbl(ComboBox2) * 1 ' TAKSİT ADEDİ
ThisWorkbook.Worksheets("DATA").Range("H" & say) = CDbl(AYLIK.Caption) * 1 ' TAKSİT TUTARI
'Ocak 2011 - J sütunundan (10.sütun) başlıyor... Ödemeler kayıt tarihinden 1 ay sonra başlayacak...
bugun = VBA.Now
sonrakiay = DateAdd("m", 1, bugun) ' Bugünkü ay'a 1 ekle
hangiay = VBA.Month(sonrakiay)
For taksitler = 0 To CDbl(ComboBox2) - 1
ThisWorkbook.Worksheets("DATA").Cells(say, 10 + hangiay + taksitler) = CDbl(AYLIK.Caption) * 1
Next taksitler
End Sub

Yalnız, bu şekilde bir taksitlendirme çok sağlıklı olmayabilir.
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 28 Aralık 2010, 16:11:54
Çekinceniz nedir Bülent Bey ?
Bulunduğumuz ay Aralık olmasına rağmen taksitleri Şubat ayından başlatıyor  :-[
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 28 Aralık 2010, 16:38:57
Söylediklerimi unutun ve kodları şu şekilde değiştirin:

Private Sub KAYDT_Click()
Dim say As Long
Dim taksitler As Integer
Dim bugun As Date, sonrakiay As Date

say = ThisWorkbook.Worksheets("DATA").Range("A65530").End(xlUp).Row + 1
ThisWorkbook.Worksheets("DATA").Range("A" & say) = TextBox2 ' VELİ ADI
ThisWorkbook.Worksheets("DATA").Range("B" & say) = TextBox1 ' ÖĞRENCİ ADI
ThisWorkbook.Worksheets("DATA").Range("C" & say) = TextBox3 ' VELİ CEP TEL
ThisWorkbook.Worksheets("DATA").Range("D" & say) = TextBox4 ' VELİ EV TEL
ThisWorkbook.Worksheets("DATA").Range("E" & say) = ComboBox1 ' SINIFI
ThisWorkbook.Worksheets("DATA").Range("F" & say) = CDbl(Label6) * 1 ' TUTAR
ThisWorkbook.Worksheets("DATA").Range("G" & say) = CDbl(ComboBox2) * 1 ' TAKSİT ADEDİ
ThisWorkbook.Worksheets("DATA").Range("H" & say) = CDbl(AYLIK.Caption) * 1 ' TAKSİT TUTARI
'Ocak 2011 - J sütunundan (10.sütun) başlıyor... Ödemeler kayıt tarihinden 1 ay sonra başlayacak...
bugun = VBA.Now
sonrakiay = DateAdd("m", 1, bugun) ' Bugünkü ay'a 1 ekle
hangiay = VBA.Month(sonrakiay)
hangiyil = VBA.Year(sonrakiay)
If hangiay = 12 Then hangiyil = hangiyil + 1
tarihbul = DateSerial(hangiyil, hangiay, 1)
baslangic_bul = Worksheets("DATA").Range("A1:IV1").Find(tarihbul).Column
For taksitler = 0 To CDbl(ComboBox2) - 1
ThisWorkbook.Worksheets("DATA").Cells(say, baslangic_bul + taksitler) = CDbl(AYLIK.Caption) * 1
Next taksitler
MsgBox "Kayıt yapıldı.", vbInformation, Application.UserName
End Sub
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 28 Aralık 2010, 20:14:19
Üstad harika oldu ! :begendim
(textox3 ve textbox4 e yazı yazmak istediğimde run-time error 5 hatası veriyor sadece).
Çok uç bir istekmi olur bilmiyorum affına sığınarak sormak istiyorum :-[ ;
Gruplar kısmında seçilen sınıflara kapasite (kontenjan) sütunu eklemiştim. Kayıt yapıldıkça bu kontenjan eksilse kontenjan 0(sıfır) olduğunda kontenjan dolu mesajı veya ekranda bu sınıf doludur uyarısı belirtebilir miyiz ?
Listbox oluşturdum taksitleri bu alanda da gösterebilir miyim?
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 29 Aralık 2010, 08:29:25
Ne yazdınız da hata verdi?
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 29 Aralık 2010, 09:01:11
Gruplar kısmında seçilen sınıflara kapasite (kontenjan) sütunu eklemiştim. Kayıt yapıldıkça bu kontenjan eksilse kontenjan 0(sıfır) olduğunda kontenjan dolu mesajı veya ekranda bu sınıf doludur uyarısı belirtebilir miyiz ?

Yeni bir label ekleyin ve adını lblKontenjan yapın.

ComboBox1 kodlarınızı aşağıdaki şekilde yazın:

Kod: [Seç]
Private Sub ComboBox1_Change()
If ComboBox1 = Empty Then Exit Sub
Dim acilan_kontenjan As Integer, satilan_kontenjan As Integer
satilan_kontenjan = 0
Label6.Caption = ComboBox1.List(ComboBox1.ListIndex, 1)
acilan_kontenjan = Val(WorksheetFunction.VLookup(ComboBox1.Text, Worksheets("GRUPLAR").Range("A2:C20"), 3, 0))
On Error Resume Next
satilan_kontenjan = Val(WorksheetFunction.CountIf(Worksheets("DATA").Range("E2:E20"), ComboBox1.Text))
lblKontenjan.Caption = Val(acilan_kontenjan - satilan_kontenjan)
If CDbl(lblKontenjan.Caption) = 0 Then MsgBox "Bu sınıf doludur!", vbCritical, "İşlem yapılamaz!": ComboBox1 = Empty
End Sub
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 29 Aralık 2010, 11:16:53
Alıntı
Ne yazdınız da hata verdi?
Rakam yerine yazı yazmak istediğimde hata aldım. Veli ve Öğrenci isimleri için rakam yazmamı zaten kabul etmiyor. O kısım oldu.

[Forum yazılım güncelleme esnasında sorun oluştuğundan eklendi silinmiştir.]
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 29 Aralık 2010, 11:27:55
Rakam yerine yazı yazmak istediğimde hata aldım. Veli ve Öğrenci isimleri için rakam yazmamı zaten kabul etmiyor. O kısım oldu.

Telefon numaraları rakam değil mi?
Rakam ve harf girmek isterseniz daha önceki kısıtlama kodunu silmeniz yeterlidir.
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 29 Aralık 2010, 11:32:35
Bu formu kullanacak arkadaşın olası yanlışlıklarına bir nebze önlem almak için kısıtlamaları yazdık. İsimlerin olacağı yere rakam istesede giremiyor. Rakam yazması gereken telefon numaraları yerinede yazı giremesin istiyorum. Yazı girmek istediğinde yazamasın. Şuan için yazı yazmak istediğinde run-time error 5 hatası veriyor. Bu hatanın peşine "End" yerine "Debug" tuşuna bastığını düşünün evlere şenlik artık :)
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 29 Aralık 2010, 11:38:26
Bende hata vermiyor.

Kodların başına aşağıdaki satırı ekler misiniz;
Kod: [Seç]
On error resume next
Bu şekilde hata vermeden devam edecektir.
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 30 Aralık 2010, 13:59:35
Bülent Bey aşağıdaki kod taksitleri satıra sıralıyor. Yazıcı sayfası oluşturmaya çalışıyorum. Bu taksitleri herhangi bir sayfaya aynı sütunun altına sıralamaya çalışıyorum.Satırın ne olduğunu bir türlü bulamıyorum. Ne yapmalıyım ?
Kod: [Seç]
Private Sub KAYDT_Click()
Dim say As Long
Dim taksitler As Integer
Dim bugun As Date, sonrakiay As Date

say = ThisWorkbook.Worksheets("DATA").Range("A65530").End(xlUp).Row + 1
ThisWorkbook.Worksheets("DATA").Range("A" & say) = TextBox2 ' VELİ ADI
ThisWorkbook.Worksheets("DATA").Range("B" & say) = TextBox1 ' ÖĞRENCİ ADI
ThisWorkbook.Worksheets("DATA").Range("C" & say) = TextBox3 ' VELİ CEP TEL
ThisWorkbook.Worksheets("DATA").Range("D" & say) = TextBox4 ' VELİ EV TEL
ThisWorkbook.Worksheets("DATA").Range("E" & say) = ComboBox1 ' SINIFI
ThisWorkbook.Worksheets("DATA").Range("F" & say) = CDbl(Label6) * 1 ' TUTAR
ThisWorkbook.Worksheets("DATA").Range("G" & say) = CDbl(ComboBox2) * 1 ' TAKSİT ADEDİ
ThisWorkbook.Worksheets("DATA").Range("H" & say) = CDbl(AYLIK.Caption) * 1 ' TAKSİT TUTARI
'Ocak 2011 - J sütunundan (10.sütun) başlıyor... Ödemeler kayıt tarihinden 1 ay sonra başlayacak...
bugun = VBA.Now
sonrakiay = DateAdd("m", 1, bugun) ' Bugünkü ay'a 1 ekle
hangiay = VBA.Month(sonrakiay)
hangiyil = VBA.Year(sonrakiay)
If hangiay = 12 Then hangiyil = hangiyil + 1
tarihbul = DateSerial(hangiyil, hangiay, 1)
baslangic_bul = Worksheets("DATA").Range("A1:IV1").Find(tarihbul).Column
For taksitler = 0 To CDbl(ComboBox2) - 1
ThisWorkbook.Worksheets("DATA").Cells(say, baslangic_bul + taksitler) = CDbl(AYLIK.Caption) * 1
Next taksitler
MsgBox "Kayıt yapıldı.", vbInformation, Application.UserName
End Sub
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 30 Aralık 2010, 16:01:03
Yazıcıya göndermek için bir sayfa tasarlayın.
Başlıkları oluşturun, veri alanlarını boş bırakın.
Her kayıtta verileri yazdırılacak sayfadaki ilgili yerlere de atıp, yazıcıya gönderebilirsiniz.
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 30 Aralık 2010, 16:06:23
Form içerisinde bunu yaptıramıyorum. Senet sayfasını ayrıca açmadan yazdırmak istiyorum.
Kod: [Seç]
Private Sub Yazdir_Click()
Dim say As Long
Dim taksitler As Integer
Dim bugun As Date, sonrakiay As Date

say = ThisWorkbook.Worksheets("DATA").Range("A65530").End(xlUp).Row + 1
ThisWorkbook.Worksheets("SENET").Range("A1") = TextBox2 ' VELİ ADI
ThisWorkbook.Worksheets("SENET").Range("A2") = TextBox1 ' ÖĞRENCİ ADI
ThisWorkbook.Worksheets("SENET").Range("A3") = TextBox3 ' VELİ CEP TEL
ThisWorkbook.Worksheets("SENET").Range("A4") = TextBox4 ' VELİ EV TEL
ThisWorkbook.Worksheets("SENET").Range("A5") = ComboBox1 ' SINIFI
ThisWorkbook.Worksheets("SENET").Range("A6") = CDbl(Label6) * 1 ' TUTAR
ThisWorkbook.Worksheets("SENET").Range("A7") = CDbl(ComboBox2) * 1 ' TAKSİT ADEDİ
ThisWorkbook.Worksheets("SENET").Range("A8") = CDbl(AYLIK.Caption) * 1 ' TAKSİT TUTARI
'Ocak 2011 - A sütunundan (1.sütun) başlıyor... Ödemeler kayıt tarihinden 1 ay sonra başlayacak...
bugun = VBA.Now
sonrakiay = DateAdd("m", 1, bugun) ' Bugünkü ay'a 1 ekle
hangiay = VBA.Month(sonrakiay)
hangiyil = VBA.Year(sonrakiay)
If hangiay = 12 Then hangiyil = hangiyil + 1
tarihbul = DateSerial(hangiyil, hangiay, 1)
baslangic_bul = Worksheets("SENET").Range("A20:S20").Find(tarihbul).Column
For taksitler = 0 To CDbl(ComboBox2) - 1
ThisWorkbook.Worksheets("SENET").Cells(say, baslangic_bul + taksitler) = CDbl(AYLIK.Caption) * 1
Next taksitler
MsgBox "TAMAM", vbInformation, Application.UserName
End Sub
Bu bilgilerle taksitler aynı satırda yan yana geliyor. Ben A20 den sonrasına senetleri A21,A22,... yazdırabilmem için
Kod: [Seç]
say = ThisWorkbook.Worksheets("DATA").Range("A65530").End(xlUp).Row + 1
Kod: [Seç]
baslangic_bul = Worksheets("SENET").Range("A20:S20").Find(tarihbul).Columnbu kodlardan hangisinde nereyi değiştirmeliyim ? :-\
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 30 Aralık 2010, 16:23:30
Tam nasıl bir şey yapmak istediğinizi anlayamadım ama şöyle açıklayayım:

DATA isimli sayfanın A sütunu 65530. satırından yukarıya doğru giderek ilk dolu satırın bulunması ve buna 1 eklenip altındaki boş satırın bulunması kodu:
Alıntı
say = ThisWorkbook.Worksheets("DATA").Range("A65530").End(xlUp).Row + 1
Kısaca; kayıt için yukarıdan aşağı ilk boş satırı buluyoruz.

Aynı şekilde SENET sayfası için de şu şekilde kullanabiliriz:
Kod: [Seç]
say = ThisWorkbook.Worksheets("SENET").Range("A65530").End(xlUp).Row + 1
Kayıtları da alt alta göndermek için:
ThisWorkbook.Worksheets("SENET").Range("A" & say) = TextBox2 ' VELİ ADI
ThisWorkbook.Worksheets("SENET").Range("A" & say+1) = TextBox1 ' ÖĞRENCİ ADI
ThisWorkbook.Worksheets("SENET").Range("A" & say+2) = TextBox3 ' VELİ CEP TEL
' ... şeklinde devam edecek...

İlk boş satırı, say değişkenine atayıp, ilgili hücreye veri gönderebiliriz.
Sonraki alanları birer alta yazdırmak için say değişkenine sırayla; 1, 2, 3 vs. ekleriz...
Yani,
Range("A" & say) --> A2 hücresine denk gelirse
Range("A" & say+1) --> A3 hücresine denk gelir
Range("A" & say+2) --> A4 hücresine denk gelir.
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 30 Aralık 2010, 18:02:39
Bülent Bey gözümün önünde bir yerde ama bulamadım yerini. Bulamadım birde siz bakar mısınız ? :-[

[Forum yazılım güncelleme esnasında sorun oluştuğundan eklendi silinmiştir.]
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 31 Aralık 2010, 08:38:11
Neyi bulamadınız, anlamadım?
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 31 Aralık 2010, 10:05:27
Yazdır butonuna tıkladığımda "snt" sayfasına taksitleri alt alta sıralamasını istiyorum. "snt" sayfasından çıktı alıp müşteriye imzalatıp dosyalayacağım.
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 31 Aralık 2010, 11:49:05
Önceki mesajımda verdiğim şekilde kodları uyarlamayı denediniz mi?


Aynı şekilde snt sayfası için de şu şekilde kullanabiliriz:
Kod: [Seç]
say = ThisWorkbook.Worksheets("snt").Range("A65530").End(xlUp).Row + 1Örneğin B sütunu için Range("A65530") yerine B65530 yazacaksınız.

Kayıtları da alt alta göndermek için:
Kod: [Seç]
ThisWorkbook.Worksheets("snt").Range("A" & say) = TextBox2 ' VELİ ADI
ThisWorkbook.Worksheets("snt").Range("A" & say+1) = TextBox1 ' ÖĞRENCİ ADI
ThisWorkbook.Worksheets("snt").Range("A" & say+2) = TextBox3 ' VELİ CEP TEL
' ... şeklinde devam edecek...

İlk boş satırı, say değişkenine atayıp, ilgili hücreye veri gönderebiliriz.
Sonraki alanları birer alta yazdırmak için say değişkenine sırayla; 1, 2, 3 vs. ekleriz...
Yani,
Range("A" & say) --> A2 hücresine denk gelirse
Range("A" & say+1) --> A3 hücresine denk gelir
Range("A" & say+2) --> A4 hücresine denk gelir.
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 03 Ocak 2011, 12:53:13
Sonunda hallettim Bülent Bey !  :yahooo Excelimde problem vardı sanırım yeni sayfa oluşturarak problemi çözdüm.Akşam çalışmanın son halini yükleyeceğim diğer arkadaşlarında ihtiyacı olabilir.
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 03 Ocak 2011, 14:01:21
Yapacağınıza şüphem yoktu zaten.  :yahooo

İşi çözdünüz. Tebrik ediyorum.  :alkis :alkis
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 04 Ocak 2011, 17:10:09
Bülent Bey öncelikle size , formu bu sayfaya kadar sabırla okuyan yeni/eski arkadaşlara sabır ve ilgilerinden dolayı teşekkür ediyorum. Formda VBA şifresi vardır. Şifre: excelce.net
(Bülent Bey formu kullandıkça ufak tefek düzeltmelere ihtiyaç duyuyorum. Belirlenen fiyata indirim yaptıktan sonra küsürlü toplam fiyat ve/veya küsürlü taksitler çıkıyor. Bunları yukarıya yuvarlamak için kodlarıma ne eklemeliyim ?)
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 04 Ocak 2011, 17:38:42
Rica ederim Serkan Bey. Sizin azminiz de takdire değer.  :alkis

Ben de bunu ne zaman soracaksınız diye merak ediyordum.  ;)

Yuvarlama için şu şekilde çözüm bulabilirsiniz:

AYLIK = Round(CDbl(TextBox1), 2)
Kırmızı boyalı 2 değeri, kaç basamak alınacağını, yeşil yazılı Round ise yuvarla fonksiyonunu belirtiyor.
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 04 Ocak 2011, 17:43:05
 :utandim :saygilar
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 05 Ocak 2011, 13:17:03
Otomatik senet numarası ve DATA sayfasında sınıf bilgilerine göre renklendirme eklenmiş hali !

[Forum yazılım güncelleme esnasında sorun oluştuğundan eklendi silinmiştir.]
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 05 Ocak 2011, 16:38:07
Arkadaşlar ekte sıkıntımı yazdım. Hücreye elle rakam girince satırları girdiğim sayı kadar dolduruyor. Başka bir hücredeki sayıyı kopyalayınca kafası karışıyor ! :hımm

[Forum yazılım güncelleme esnasında sorun oluştuğundan eklendi silinmiştir.]
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: Bülent Öztürk - 06 Ocak 2011, 08:27:19
D3 hücresinde formülü şu şekilde değiştirip aşağı sürükleyin:
Kod: [Seç]
=EĞER(EHATALIYSA(EĞER(D2+1<=SAYIYAÇEVİR($E$1);D2+1;""));"";EĞER(D2+1<=SAYIYAÇEVİR($E$1);D2+1;""))
E1 sayı olarak görünmediği için hatalı sonuç verdiğinden dolayı, SAYIYAÇEVİR fonksiyonunu kullandık.
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 06 Ocak 2011, 15:27:45
Anladım. Hücre özelliklerinden E1 i sayı olarak tanımlamıştım ama olmamıştı.
Kod: [Seç]
faturano = faturano + 1
ThisWorkbook.Worksheets("snt").Range("J2") = faturano 'Fatura No
bu sadece 1 artırıyor sonra artırmıyor. Bütün yeni senetlerde senet numarası 1 de kalıyor ?!
Başlık: Ynt: Dershane Kayıt Form / program
Gönderen: serul - 06 Ocak 2011, 16:07:15
Kendim sordum kendim cevaplıyorum kusura bakmayın  :-[
Kod: [Seç]
Sheets("snt").[J2] = Sheets("snt").[J2] + 1ile sorunu çözdüm.