Soru Kod Kontrol If deyiminden Çıkış

ToHaNS

Altın Üye
Katılım
29 Haziran 2015
Mesajlar
29
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
21-04-2026
Merhaba arkadaşlar,
Kodlarımda bir mantık ve sıralama hatası var muhtemelen ama bir türlü hatamı çözemedim. Rica etsem kodları gözden geçirebilir misiniz.

Kodları tekrar tekrar kopyala yapıştır yapmayayım karmaşık bir yazım olmasın diye GoTo kullanmak istedim ama tam yapamadım. If - ElseIf - End if - GoTo arasında sıkıştım kaldım :)

Kod:
Private Sub BtnKaydet_Click()
Dim Sor, tur As String, Sayfa As Worksheet, ss As Long, Form As Object, bul As Variant
If TextTarih.Value = Empty Then
MsgBox "Lütfen bir tarih giriniz", vbExclamation + vbOKOnly, "DİKKAT!..."
TextTarih.SetFocus
ElseIf TextCariAdi.Value = Empty Then
MsgBox "Lütfen kayıtlı bir cari seçiniz.", vbExclamation + vbOKOnly, "DİKKAT!..."
TextCariAdi.SetFocus
ElseIf TextTutar.Value = Empty Then
MsgBox "Lütfen bir tutar giriniz.", vbExclamation + vbOKOnly, "DİKKAT!..."
TextTutar.SetFocus
ElseIf ComboParaBirimi.ListIndex = -1 Then
MsgBox "Lütfen bir para birimi seçiniz.", vbExclamation + vbOKOnly, "DİKKAT!..."
ElseIf ComboIslemKasasi.ListIndex = -1 Then
MsgBox "Lütfen bir kasa seçiniz.", vbExclamation + vbOKOnly, "DİKKAT!..."
ElseIf TextAciklama.Value = Empty Then
MsgBox "Lütfen bir açıklama belirtiniz.", vbExclamation + vbOKOnly, "DİKKAT!..."
TextAciklama.SetFocus
Else
Set Form = FrmOdemeTahsilatYap
Set Sayfa = Sheets("KasaHareket")
ss = Sayfa.Cells(Rows.Count, 1).End(xlUp).Row + 1

If Form.islem = "ÖDEME" Then tur = "Ödeme"
If Form.islem = "TAHSİLAT" Then tur = "Tahsilat"
Sor = MsgBox(tur & " işlemi kaydedilecek. Onaylıyor musunuz?", vbQuestion + vbYesNo + vbDefaultButton1, "İŞLEM ONAY...")
If Sor = vbNo Then Exit Sub

If Form.islem = "ÖDEME" Then Sheets("Ayarlar").Range("I13").Value = Sheets("Ayarlar").Range("I13").Value + 1
Sayfa.Cells(ss, 1).Value = Sheets("Ayarlar").Range("I13").Value
Sayfa.Cells(ss, 7).Value = "ÖDEME"
Sheets("CariHareket").Range("A" & Sheets("CariHareket").Cells(Rows.Count, "A").End(xlUp).Row + 1) = Sheets("Ayarlar").Range("I13").Value
Sheets("CariHareket").Range("C" & Sheets("CariHareket").Cells(Rows.Count, "C").End(xlUp).Row + 1) = "ÖDEME"

      For Each bul In Sheets("Cariler").Range("A2:O" & Sheets("Cariler").Cells(Rows.Count, "A").End(xlUp).Row)
            If bul.Value = TextCariKodu.Value Then
            bul(1, 11).Value = CDbl(bul(1, 11).Value) + CDbl(TextTutar.Value)
            bul(1, 13).Value = CDbl(bul(1, 12).Value) - CDbl(bul(1, 11).Value)
            End If
      Next bul
      MsgBox "Ödeme olarak işlem yaptım", vbOKOnly ' kod satırı kontrol amaçlı yazılmıştır
GoTo devam
'End If
If Form.islem = "TAHSİLAT" Then Sheets("Ayarlar").Range("I12").Value = Sheets("Ayarlar").Range("I12").Value + 1
Sayfa.Cells(ss, 1).Value = Sheets("Ayarlar").Range("I12").Value
Sayfa.Cells(ss, 7).Value = "TAHSİLAT"
Sheets("CariHareket").Range("A" & Sheets("CariHareket").Cells(Rows.Count, "A").End(xlUp).Row + 1) = Sheets("Ayarlar").Range("I12").Value
Sheets("CariHareket").Range("C" & Sheets("CariHareket").Cells(Rows.Count, "C").End(xlUp).Row + 1) = "TAHSİLAT"

      For Each bul In Sheets("Cariler").Range("A2:O" & Sheets("Cariler").Cells(Rows.Count, "A").End(xlUp).Row)
            If bul.Value = TextCariKodu.Value Then
            bul(1, 12).Value = CDbl(bul(1, 12).Text) + CDbl(TextTutar.Text)
            bul(1, 13).Value = CDbl(bul(1, 12).Text) - CDbl(bul(1, 11).Text)
            End If
      Next bul
 MsgBox "tahsilat olarak işlem yaptım", vbOKOnly ' kod satırı kontrol amaçlı yazılmıştır
GoTo devam
'End If
devam:
Sayfa.Cells(ss, 2).Value = Format(CDate(TextTarih.Value), "dd.mm.yyyy")
Sayfa.Cells(ss, 3).Value = TextCariKodu.Value
Sayfa.Cells(ss, 4).Value = TextCariAdi.Value
Sayfa.Cells(ss, 5).Value = TextCariAdUnvan.Value
Sayfa.Cells(ss, 6).Value = ComboIslemKasasi.Value
Sayfa.Cells(ss, 8).Value = CDbl(TextTutar.Text)
Sayfa.Cells(ss, 9).Value = ComboParaBirimi.Value
Sayfa.Cells(ss, 10).Value = UCase(Replace(Replace(TextAciklama.Value, "ı", "I"), "i", "İ"))
Set Sayfa = Sheets("CariHareket")
ss = Sayfa.Cells(Rows.Count, "B").End(xlUp).Row + 1
Sayfa.Cells(ss, 2).Value = Format(CDate(TextTarih.Value), "dd.mm.yyyy")
Sayfa.Cells(ss, 4).Value = TextCariKodu.Value
Sayfa.Cells(ss, 5).Value = TextCariAdi.Value
Sayfa.Cells(ss, 6).Value = TextCariAdUnvan.Value
Sayfa.Cells(ss, 7).Value = CDbl(TextTutar.Text)
Sayfa.Cells(ss, 8).Value = CDbl(0)
Sayfa.Cells(ss, 9).Value = CDbl(0)
Sayfa.Cells(ss, 10).Value = CDbl(TextTutar.Text)
Sayfa.Cells(ss, 11).Value = ComboParaBirimi.Value
Sayfa.Cells(ss, 12).Value = ComboIslemKasasi.Value
Sayfa.Cells(ss, 13).Value = UCase(Replace(Replace(TextAciklama.Value, "ı", "I"), "i", "İ"))





MsgBox tur & " kaydetme işlemi başarılı.", vbInformation + vbOKOnly, "BAŞARILI KAYIT..."
CommandButton4_Click ' Temizlik yap
End If
End Sub

Sorun yaşadığım kısım alttaki kısım Ödemeyi normal yapıyor hesaplamalar sutunlar satırlar doğru ama tahsilat yaptıramıyorum ödeme döngüsünü devam ettiriyor

Kod:
If Form.islem = "ÖDEME" Then Sheets("Ayarlar").Range("I13").Value = Sheets("Ayarlar").Range("I13").Value + 1

Sayfa.Cells(ss, 1).Value = Sheets("Ayarlar").Range("I13").Value

Sayfa.Cells(ss, 7).Value = "ÖDEME"

Sheets("CariHareket").Range("A" & Sheets("CariHareket").Cells(Rows.Count, "A").End(xlUp).Row + 1) = Sheets("Ayarlar").Range("I13").Value

Sheets("CariHareket").Range("C" & Sheets("CariHareket").Cells(Rows.Count, "C").End(xlUp).Row + 1) = "ÖDEME"



      For Each bul In Sheets("Cariler").Range("A2:O" & Sheets("Cariler").Cells(Rows.Count, "A").End(xlUp).Row)

            If bul.Value = TextCariKodu.Value Then

            bul(1, 11).Value = CDbl(bul(1, 11).Value) + CDbl(TextTutar.Value)

            bul(1, 13).Value = CDbl(bul(1, 12).Value) - CDbl(bul(1, 11).Value)

            End If

      Next bul

      MsgBox "Ödeme olarak işlem yaptım", vbOKOnly ' kod satırı kontrol amaçlı yazılmıştır

GoTo devam

'End If

If Form.islem = "TAHSİLAT" Then Sheets("Ayarlar").Range("I12").Value = Sheets("Ayarlar").Range("I12").Value + 1

Sayfa.Cells(ss, 1).Value = Sheets("Ayarlar").Range("I12").Value

Sayfa.Cells(ss, 7).Value = "TAHSİLAT"

Sheets("CariHareket").Range("A" & Sheets("CariHareket").Cells(Rows.Count, "A").End(xlUp).Row + 1) = Sheets("Ayarlar").Range("I12").Value

Sheets("CariHareket").Range("C" & Sheets("CariHareket").Cells(Rows.Count, "C").End(xlUp).Row + 1) = "TAHSİLAT"



      For Each bul In Sheets("Cariler").Range("A2:O" & Sheets("Cariler").Cells(Rows.Count, "A").End(xlUp).Row)

            If bul.Value = TextCariKodu.Value Then

            bul(1, 12).Value = CDbl(bul(1, 12).Text) + CDbl(TextTutar.Text)

            bul(1, 13).Value = CDbl(bul(1, 12).Text) - CDbl(bul(1, 11).Text)

            End If

      Next bul

 MsgBox "tahsilat olarak işlem yaptım", vbOKOnly ' kod satırı kontrol amaçlı yazılmıştır

GoTo devam

'End If

devam:

Sayfa.Cells(ss, 2).Value = Format(CDate(TextTarih.Value), "dd.mm.yyyy")

Sayfa.Cells(ss, 3).Value = TextCariKodu.Value

Sayfa.Cells(ss, 4).Value = TextCariAdi.Value

Sayfa.Cells(ss, 5).Value = TextCariAdUnvan.Value

Sayfa.Cells(ss, 6).Value = ComboIslemKasasi.Value

Sayfa.Cells(ss, 8).Value = CDbl(TextTutar.Text)

Sayfa.Cells(ss, 9).Value = ComboParaBirimi.Value

Sayfa.Cells(ss, 10).Value = UCase(Replace(Replace(TextAciklama.Value, "ı", "I"), "i", "İ"))

Set Sayfa = Sheets("CariHareket")

ss = Sayfa.Cells(Rows.Count, "B").End(xlUp).Row + 1

Sayfa.Cells(ss, 2).Value = Format(CDate(TextTarih.Value), "dd.mm.yyyy")

Sayfa.Cells(ss, 4).Value = TextCariKodu.Value

Sayfa.Cells(ss, 5).Value = TextCariAdi.Value

Sayfa.Cells(ss, 6).Value = TextCariAdUnvan.Value

Sayfa.Cells(ss, 7).Value = CDbl(TextTutar.Text)

Sayfa.Cells(ss, 8).Value = CDbl(0)

Sayfa.Cells(ss, 9).Value = CDbl(0)

Sayfa.Cells(ss, 10).Value = CDbl(TextTutar.Text)

Sayfa.Cells(ss, 11).Value = ComboParaBirimi.Value

Sayfa.Cells(ss, 12).Value = ComboIslemKasasi.Value

Sayfa.Cells(ss, 13).Value = UCase(Replace(Replace(TextAciklama.Value, "ı", "I"), "i", "İ"))
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Örnek dosya olmazsa bu kodları nasıl deneyebiliriz sizce? ;)
 

ToHaNS

Altın Üye
Katılım
29 Haziran 2015
Mesajlar
29
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
21-04-2026
Çok haklısınız :)
ben aslında nerelere end if koymam gerektiğini başaramadım. Derdimi de tam anlatamadım sanırım.
Yanlış anlamazsanız dosyayı özelden göndereyim hocam


Kod:
If Form.islem = "ÖDEME" Then
aşağıdaki kodları çalıştır ve devam kısmına ilerleyerek ilerle Eğer değilse bir sonraki if deyimini kontrol et
Yanı bu koşul sağlanmıyorsa iki satır alttaki GoTo devam'a değil de bir sonraki if deyimine giderek kontrol etmesini sağlayamadım
...
...
GoTo devam

If Form.islem = "TAHSİLAT" Then
aşağıdaki kodları çalıştır ve devam kısmına ilerleleyerek devam et Eğer değilse başka olasılık yok yukarıdaki if deyimi sağlıyor demek
...
...
GoTo devam


devam:
...
...
'End if
'End if
End Sub
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki gibi deneyin:

Kod:
If Form.islem = "ÖDEME" Then
aşağıdaki kodları çalıştır ve devam kısmına ilerleyerek ilerle Eğer değilse bir sonraki if deyimini kontrol et
Yanı bu koşul sağlanmıyorsa iki satır alttaki GoTo devam'a değil de bir sonraki if deyimine giderek kontrol etmesini sağlayamadım
...
...
GoTo devam

ElseIf Form.islem = "TAHSİLAT" Then
aşağıdaki kodları çalıştır ve devam kısmına ilerleleyerek devam et Eğer değilse başka olasılık yok yukarıdaki if deyimi sağlıyor demek
...
...
GoTo devam


devam:
...
...

End if
End Sub
 

ToHaNS

Altın Üye
Katılım
29 Haziran 2015
Mesajlar
29
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
21-04-2026
GoTo kullanımından vaz geçip kodları düzenleyerek sorunumu çözdüm. Desteğinden ve ilgisinden dolayı @YUSUF44 hocama teşekkür ediyorum.
 
Üst