• DİKKAT

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

İf Else End İf Sorunu

  • Konbuyu başlatan Konbuyu başlatan ahmedummu
  • Başlangıç tarihi Başlangıç tarihi
A

ahmedummu

Misafir
Merhaba arkadaşlar.

Aşağıdaki kodda textbox23="ÜCRETLİ" ise
Veriler ÜBL sayfasına, değil ise EBL sayfasına yazılacak. Fakat Textbox23'ün değeri ÜCRETLİ olanları da EBL sayfasına yazdırıyor. Yardımcı olabilir misiniz.

Kod:
If TextBox23.Value = "ÜCRETLİ" Then
Sheets("ÜBL").Select
Range("b5").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
'YAZDIRILIYOR
ActiveCell.Offset(0, 0).Value = adi
ActiveCell.Offset(0, 1).Value = tcno
ActiveCell.Offset(0, 2).Value = ibanno
ActiveCell.Offset(0, 3).Value = hesapno
ActiveCell.Offset(0, 4).Value = odenecektutar
'OTOMATİK SIRA NUMARASI VERİLİYOR
If Not IsNumeric(ActiveCell.Offset(-1, -1)) Then 'bir sol ve bir üst hücrenin nümerik olup olmadığı kontrol ediliyor
ActiveCell.Offset(0, -1).Value = 1 'eğer nümerik değil ise aktif hücrenin bir soldaki hücrenin değeri 1 oluyor
Else
ActiveCell.Offset(0, -1).Value = ActiveCell.Offset(-1, -1).Value + 1 'nümerik ise aktif hücrenin bir solundaki hücrenin değeri, aktif hücrenin bir solundaki ve bir üstündeki hücre değerinin 1 afzlasını alıyor
End If
'EN ALT SATIRA TOPLAM ALINIYOR
sayfa = "ÜBL" 'ActiveSheet.Name
son = Worksheets(sayfa).Cells(Rows.Count, 2).End(3).Row
Sheets(sayfa).Cells(son + 1, "f").Value = WorksheetFunction.Sum(Sheets(sayfa).Range(Sheets(sayfa).Cells(2, "f"), Sheets(sayfa).Cells(son, "f")).Value)
'ÇİZGİLER ÇİZİLİYOR
Dim aa As Integer
For aa = -1 To 4
ActiveCell.Offset(0, aa).Borders.LineStyle = 1
ActiveCell.Offset(1, 4).Borders.LineStyle = 1
Next aa

'YAZI BOYUTUNU 8 PUNTO YAPIYOR
Dim ab As Integer
For ab = -1 To 4
ActiveCell.Offset(0, ab).Font.Size = 7
ActiveCell.Offset(1, ab).Font.Size = 7
Next ab
'8 VE 12 SÜTUNLARI ORTALIYOR
ActiveCell.Offset(0, -1).HorizontalAlignment = xlCenter

Else

Sheets("EBL").Select
Range("b5").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
Sheets("EBL").Select
'YAZDIRILIYOR
ActiveCell.Offset(0, 0).Value = adi
ActiveCell.Offset(0, 1).Value = tcno
ActiveCell.Offset(0, 2).Value = ibanno
ActiveCell.Offset(0, 3).Value = hesapno
ActiveCell.Offset(0, 4).Value = odenecektutar
'OTOMATİK SIRA NUMARASI VERİLİYOR
If Not IsNumeric(ActiveCell.Offset(-1, -1)) Then 'bir sol ve bir üst hücrenin nümerik olup olmadığı kontrol ediliyor
ActiveCell.Offset(0, -1).Value = 1 'eğer nümerik değil ise aktif hücrenin bir soldaki hücrenin değeri 1 oluyor
Else
ActiveCell.Offset(0, -1).Value = ActiveCell.Offset(-1, -1).Value + 1 'nümerik ise aktif hücrenin bir solundaki hücrenin değeri, aktif hücrenin bir solundaki ve bir üstündeki hücre değerinin 1 afzlasını alıyor
End If
'EN ALT SATIRA TOPLAM ALINIYOR
sayfa = "EBL" 'ActiveSheet.Name
son = Worksheets(sayfa).Cells(Rows.Count, 2).End(3).Row
Sheets(sayfa).Cells(son + 1, "f").Value = WorksheetFunction.Sum(Sheets(sayfa).Range(Sheets(sayfa).Cells(2, "f"), Sheets(sayfa).Cells(son, "f")).Value)
'ÇİZGİLER ÇİZİLİYOR
Dim ana As Integer
For ana = -1 To 4
ActiveCell.Offset(0, ana).Borders.LineStyle = 1
ActiveCell.Offset(1, 4).Borders.LineStyle = 1
Next ana

'YAZI BOYUTUNU 8 PUNTO YAPIYOR
Dim aba As Integer
For aba = -1 To 4
ActiveCell.Offset(0, aba).Font.Size = 7
ActiveCell.Offset(1, aba).Font.Size = 7
Next aba
'8 VE 12 SÜTUNLARI ORTALIYOR
ActiveCell.Offset(0, -1).HorizontalAlignment = xlCenter
End If
 
Kodda bir sorun göremedim. TextBox23 ün gerçekten "ÜCRETLİ" değerini alıp almadığından emin olmak lazım.

Kodu If TextBox23.Value = "ÜCRETLİ" Then satırında durdurun.
TextBox23 ün değerini kontrol edin. ÜCRETLİ nin başında sonunda boşluk varmı. UCRETLI yada UCRETLİ yada ÜCRETLI gibi mi yazılmış bakmak lazım.
 
Bu kod banka listesi oluşturma.

Puantaj ve Bordro hesaplama kodları var orada aynı yöntem çalışıyor. Verileri ilgili sayfalara aktarıyor. Yanlış yazıldığını ve başında ve sonunda boşluk olabileceğini düşünerek kodu yazarken ÜCRETLİ kelimesini combobox'dan kopyala yapıştır yaptım yine olmadı.
 
Bu kod banka listesi oluşturma.

Puantaj ve Bordro hesaplama kodları var orada aynı yöntem çalışıyor. Verileri ilgili sayfalara aktarıyor. Yanlış yazıldığını ve başında ve sonunda boşluk olabileceğini düşünerek kodu yazarken ÜCRETLİ kelimesini combobox'dan kopyala yapıştır yaptım yine olmadı.

If TextBox23.Value = "ÜCRETLİ" Then

yerine, aşağıdaki şekilde yazıp dener misiniz?

If "ÜCRETLİ" = "ÜCRETLİ" Then
 
Bu kez de hepsini ÜBL sayfasına yazıyor. Daha önce hepsini EBL sayfasına yazıyordu.

Şöyle bir ayrıntı var. ÜCRETLİ ise ÜBL sayfasına EMEKLİ ÜCRETLİ ise EBL sayfasına yazdıracak. Textbox23 ya ÜCRETLİ ya da EMEKLİ ÜCRETLİ değerini alıyor.
 
Moderatör tarafında düzenlendi:
Bu kez de hepsini ÜBL sayfasına yazıyor. Daha önce hepsini EBL sayfasına yazıyordu.
Bu kodunuzun doğru çalıştığını gösterir. Biz textbox ın alması gereken değeri "ÜCRETLİ" yaptık her durumda. Bu durumda eşitlik sağlandı ÜBL işleme alındı.

Bu da demek oluyor ki sizin textbox23 ÜCRETLİ değerini hiç almıyor.
 
ÜCRETLİ, EMEKLİ ÜCRETLİ bilgileri, yani kişilerin statüleri veri tabanında kayıtlı. Listbox'tan kişiyi seçtiğimizde statü bilgileri textbox23'e otomatik olarak geliyor. Kodu çalıştırmadan textbox'un değerinin ÜCRETLİ ya da EMEKLİ ÜCRETLİ değerini aldığın görülebiliyor. Şöyle söyleyim. Bu durumda 4 personel var. 2'si ÜCRETLİ, 2'si EMEKLİ ÜCRETLİ statüsünde. Yani textbox23 ÜCRETLİ değerini alıyor.
 
ÜCRETLİ, EMEKLİ ÜCRETLİ bilgileri, yani kişilerin statüleri veri tabanında kayıtlı. Listbox'tan kişiyi seçtiğimizde statü bilgileri textbox23'e otomatik olarak geliyor. Kodu çalıştırmadan textbox'un değerinin ÜCRETLİ ya da EMEKLİ ÜCRETLİ değerini aldığın görülebiliyor. Şöyle söyleyim. Bu durumda 4 personel var. 2'si ÜCRETLİ, 2'si EMEKLİ ÜCRETLİ statüsünde. Yani textbox23 ÜCRETLİ değerini alıyor.

Siz aldığını düşünüyorsunuz. Bence alsaydı if sorgusu doğru çalışırdı.

if in olduğu yere bir break point koyun. programı çalıştırıp o aşamada durdurup o an textbox23 ün değerini mouse ile üzerine gelince görebilirsiniz. Oradan kontrol edip sonucu yazar mısınız?
 
Nasıl ve tam olarak nereye yazacağımı söyleyebilir misiniz.

İf textbox23.value="ÜCRETLİ" then olan satırın neresine yazacağım.

Aşağıdaki gibi yazdım break kelimesini seçip hata verdi.

İf textbox23.value="ÜCRETLİ" then
break point
 
Nasıl ve tam olarak nereye yazacağımı söyleyebilir misiniz.

İf textbox23.value="ÜCRETLİ" then olan satırın neresine yazacağım.

Aşağıdaki gibi yazdım break kelimesini seçip hata verdi.

İf textbox23.value="ÜCRETLİ" then
break point

if deki textbox23 ün üzerini tıklayın mouse işareti o satırda olacak.
F9 a basın o satır koyu şekilde işaretlenecek.

Sonra programı çalıştırın. işlemleri yaptığınızda yarıda kesilecektir. VBA tarafına baktığınızda o satırda durduğunu göreceksiniz.

Mouse ile textbox23 yazısının üzerine gelin küçük bir kutucuk içinde değerini gösterecektir.
 
Evet haklısınız ÜCRETLİ değerini almıyor. Neden almıyor olabilir. Dosyayı göndersem bakabilir misiniz

Değer : Textbox23.Value=""
 
Siz gönderin burada kontrol edebilecek arkadaş çok.
Bende zaman olur ise bakabilirim. Ne ile karşılaşacağımı bilemiyorum :)
 
Kodlar Userform5 üzerindeki Commandbutton1 de yazılı. Listbox1'den isim seçiliyor textbox2 ve textbox3'e sayısal değer giriliyor. Daha sonra commndbutton1' tıklandığında veriler textbox23'ün değerine göre ÜBORD veya EBORD, ÜBL veya EBL sayfalarına kaydoluyor. Butonun içinde çok uzun kod olduğu için

BANKA LİSTESİ HESPALANIYOR

diye aratabilirsiniz.
 

Ekli dosyalar

ilginize Çok teşekkür ederim. asri (kullanıcı isimli üye) sorun çözüldü. Bordroya (ÜBORD) sayfasına kaydettikten sonra Textbox23'un değeri temizleniyormuş. (Textbox.Value="")
 
ilginize Çok teşekkür ederim. asri (kullanıcı isimli üye) sorun çözüldü. Bordroya (ÜBORD) sayfasına kaydettikten sonra Textbox23'un değeri temizleniyormuş. (Textbox.Value="")

Tamamdır. Bende mdb olmadığı için tam kontrol sağlayamadım.

Kolay gelsin.
 
Geri
Üst