combobox değerine göre arama yapma

sirkülasyon

Altın Üye
Katılım
10 Temmuz 2012
Mesajlar
2,523
Excel Vers. ve Dili
2021 LTSC TR
Altın Üyelik Bitiş Tarihi
18-06-2026
Private Sub CommandButton1_Click()
Dim yil As Long
Dim ay As String
Dim yilSatiri ,aySutunu,KDVYıl ,KDVAy ,KDVTevkifatYıl, KDVTevkifatAy As Variant

yil = ComboBox1.Value
ay = ComboBox2.Value

If Not IsNumeric(yil) Then
MsgBox "Lütfen geçerli bir yıl girin."
Exit Sub
End If
If IsError(Application.Match(ay, Array("Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"), 0)) Then
MsgBox "Lütfen geçerli bir ay seçin."
Exit Sub
End If


If TextBox5 <> "" And TextBox6 = "Mükellef" And TextBox8 = "Doğrudan Temin (22/d)" Then
TextBox11.Value = Format(Val(TextBox9.Value) * CDbl(TextBox5.Value), "#,##0.00")


KDVYıl = Application.Match(yil, Sheets("ORANLAR").Range("N3:N100"), 0)
KDVAy = Application.Match(ay, Sheets("ORANLAR").Range("O2:Z2"), 0)
TextBox13.Value = Format(TextBox11.Value * Sheets("ORANLAR").Cells(KDVYıl + 2, KDVAy + 14).Value, "#,##0.00")
TextBox14.Value = Format(CDbl(TextBox11.Value) + CDbl(TextBox13.Value), "#,##0.00")


KDVTevkifatYıl = Application.Match(yil, Sheets("ORANLAR").Range("AA3:AA100"), 0)
KDVTevkifatAy = Application.Match(ay, Sheets("ORANLAR").Range("AB2:AM2"), 0)
TextBox15.Value = Format(TextBox11.Value * Sheets("ORANLAR").Cells(KDVTevkifatYıl + 2, KDVTevkifatAy + 14).Value, "#,##0.00")
End If

KDVTevkifatYıl ile KDVTevkifatAy Kısmı belirtilen aralıkta arama yapmıyor. KDVYıl ile KDVAy kısmında belirtilen veriyi getiriyor. Yardımcı olabilir misiniz?
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
698
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Sorununuz, KDVTevkifatYıl ve KDVTevkifatAy değişkenlerinin doğru aralıklarda arama yapmamasından kaynaklanıyor gibi görünüyor. Bu durum, Application.Match fonksiyonunun yanlış aralıklarla kullanılmasından veya aralıkların doğru şekilde tanımlanmamasından kaynaklanabilir.

Kod:
Private Sub CommandButton1_Click()
    Dim yil As Long
    Dim ay As String
    Dim KDVYıl As Variant, KDVAy As Variant
    Dim KDVTevkifatYıl As Variant, KDVTevkifatAy As Variant

    yil = ComboBox1.Value
    ay = ComboBox2.Value
    
    If Not IsNumeric(yil) Then
        MsgBox "Lütfen geçerli bir yıl girin."
        Exit Sub
    End If

    If IsError(Application.Match(ay, Array("Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"), 0)) Then
        MsgBox "Lütfen geçerli bir ay seçin."
        Exit Sub
    End If
    
    KDVYıl = Application.Match(yil, Sheets("ORANLAR").Range("N3:N100"), 0)
    KDVAy = Application.Match(ay, Sheets("ORANLAR").Range("O2:Z2"), 0)
    
    If IsError(KDVYıl) Then
        MsgBox "KDV yıl oranı bulunamadı."
        Exit Sub
    End If
    If IsError(KDVAy) Then
        MsgBox "KDV ay oranı bulunamadı."
        Exit Sub
    End If
    
    If TextBox5 <> "" And TextBox6 = "Mükellef" And TextBox8 = "Doğrudan Temin (22/d)" Then
        TextBox11.Value = Format(Val(TextBox9.Value) * CDbl(TextBox5.Value), "#,##0.00")
        TextBox13.Value = Format(TextBox11.Value * Sheets("ORANLAR").Cells(KDVYıl + 2, KDVAy + 14).Value, "#,##0.00")
        TextBox14.Value = Format(CDbl(TextBox11.Value) + CDbl(TextBox13.Value), "#,##0.00")
    End If
    
    KDVTevkifatYıl = Application.Match(yil, Sheets("ORANLAR").Range("AA3:AA100"), 0)
    KDVTevkifatAy = Application.Match(ay, Sheets("ORANLAR").Range("AB2:AM2"), 0)
    
    If IsError(KDVTevkifatYıl) Then
        MsgBox "KDV tevkifat yıl oranı bulunamadı."
        Exit Sub
    End If
    If IsError(KDVTevkifatAy) Then
        MsgBox "KDV tevkifat ay oranı bulunamadı."
        Exit Sub
    End If
    
    TextBox15.Value = Format(TextBox11.Value * Sheets("ORANLAR").Cells(KDVTevkifatYıl + 2, KDVTevkifatAy + 14).Value, "#,##0.00")
End Sub
Deneyiniz
 
Son düzenleme:

sirkülasyon

Altın Üye
Katılım
10 Temmuz 2012
Mesajlar
2,523
Excel Vers. ve Dili
2021 LTSC TR
Altın Üyelik Bitiş Tarihi
18-06-2026
KDVYıl = Application.Match(yil, Sheets("ORANLAR").Range("N3:N100"), 0)
KDVAy = Application.Match(ay, Sheets("ORANLAR").Range("O2:Z2"), 0)
yine aynı sütunda ki değerleri getirdi
KDVTevkifatYıl = Application.Match(yil, Sheets("ORANLAR").Range("AA3:AA100"), 0)
KDVTevkifatAy = Application.Match(ay, Sheets("ORANLAR").Range("AB2:AM2"), 0)
sütunlarında hiç aramadı
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
698
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Sheets("ORANLAR").Range("N3:N100"): Yıl değerlerinin bu aralıkta olduğundan emin olun.
Sheets("ORANLAR").Range("O2:Z2"): Ay değerlerinin bu aralıkta olduğundan emin olun.
Sheets("ORANLAR").Range("AA3:AA100"): KDV tevkifat yıl değerlerinin bu aralıkta olduğundan emin olun.
Sheets("ORANLAR").Range("AB2:AM2"): KDV tevkifat ay değerlerinin bu aralıkta olduğundan emin olun.

Yukardaki kodu yeniden düzenledim.Kontrol ediniz

Dim i As Long
KDVTevkifatYıl = -1
For i = 3 To 100
If Sheets("ORANLAR").Range("AA" & i).Value = yil Then
KDVTevkifatYıl = i - 2 ' İndex ayarlaması
Exit For
End If
Next i

If KDVTevkifatYıl = -1 Then
MsgBox "KDV tevkifat yıl oranı bulunamadı."
Exit Sub
End If

Eğer Match fonksiyonu hala doğru çalışmıyorsa, For döngüsü ile manuel olarak arama yapabilirsiniz
Bu yöntem, Match fonksiyonunun çalışmadığı durumlarda kullanılabilir.
 

sirkülasyon

Altın Üye
Katılım
10 Temmuz 2012
Mesajlar
2,523
Excel Vers. ve Dili
2021 LTSC TR
Altın Üyelik Bitiş Tarihi
18-06-2026
Emeğiniz için, zaman ayırdığınız için ve yardımınızı esirgemediğiniz için teşekkür ederim.
 
Üst