Soru Değişken tanımlama

Katılım
12 Ocak 2009
Mesajlar
838
Excel Vers. ve Dili
2003
Altın Üyelik Bitiş Tarihi
07-02-2024
Merhaba arkadaşlar.
Aşağıdaki kod ile ComboBox5'e ay isimlerini mmmm.yyyy formatında listeletiyorum.
Kod:
Private Sub UserForm_Activate()
For i = 1 To 12
ComboBox5.AddItem Format(DateSerial(Year(Date), i, 1), "mmmm yyyy")
Next i
ComboBox5.ListIndex = 0
ComboBox5.ListRows = 12

Sheets(ComboBox5.Value).Select
End Sub
Kod:
Private Sub ComboBox5_Change()
Dim sh As Worksheet
Set sh = Sheets(ComboBox5.Value)
Set sh1 = Sheets(ComboBox5.Value)

Label197.Caption = FormatCurrency(sh.Range("P2").Value + sh.Range("P3").Value + sh.Range("P4").Value + sh.Range("P5").Value)
Label193.Caption = FormatCurrency(sh.Range("P2")- FormatCurrency(sh1.Range("P2")
End Sub
Burada yeni bir değişken tanımlanmasını istiyorum ki normalde sh değişkeni combobox5 te seçilen ayı döndürürken sh1 de, bir önceki ayı döndürsün.
Bu tanımlama ile iki ay arasındaki farkı hesaplatmak istiyorum.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,513
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Combobox'tan OCAK ayını seçtiğinizde sh1 hangi ayı alacak?
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,827
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Aşağıdaki kodu kullanabilirsiniz.
Ocak Ayı seçilince Aralık Ayı seçilir.
Kod:
Private Sub ComboBox5_Change()
    Dim OncekiAy As Integer
    Dim sh As Worksheet
    OncekiAy = IIf(ComboBox1.ListIndex = 0, ComboBox1.ListCount - 1, ComboBox1.ListIndex - 1)
    Set sh = Sheets(ComboBox5.Value)
    Set sh1 = Sheets(OncekiAy)
    Label197.Caption = FormatCurrency(sh.Range("P2").Value + sh.Range("P3").Value + sh.Range("P4").Value + sh.Range("P5").Value)
    Label193.Caption = FormatCurrency(sh.Range("P2") - sh1.Range("P2"))
End Sub
 
Katılım
12 Ocak 2009
Mesajlar
838
Excel Vers. ve Dili
2003
Altın Üyelik Bitiş Tarihi
07-02-2024
Merhaba.

Aşağıdaki kodu kullanabilirsiniz.
Ocak Ayı seçilince Aralık Ayı seçilir.
Kod:
Private Sub ComboBox5_Change()
    Dim OncekiAy As Integer
    Dim sh As Worksheet
    OncekiAy = IIf(ComboBox1.ListIndex = 0, ComboBox1.ListCount - 1, ComboBox1.ListIndex - 1)
    Set sh = Sheets(ComboBox5.Value)
    Set sh1 = Sheets(OncekiAy)
    Label197.Caption = FormatCurrency(sh.Range("P2").Value + sh.Range("P3").Value + sh.Range("P4").Value + sh.Range("P5").Value)
    Label193.Caption = FormatCurrency(sh.Range("P2") - sh1.Range("P2"))
End Sub
Teşekkür ederim.
Kodu şu şekilde kod bloğuna ekledim ancak hata verdi.
Kod:
Private Sub ComboBox5_Change()
Dim sh, sh1 As Worksheet
OncekiAy = IIf(ComboBox5.ListIndex = 0, ComboBox5.ListCount - 1, ComboBox5.ListIndex - 1)
Set sh = Sheets(ComboBox5.Value)
Set sh1 = Sheets(OncekiAy)



Label193.Caption = FormatCurrency(sh.Range("P2").Value) - FormatCurrency(sh1.Range("P2").Value)
Label194.Caption = FormatCurrency(sh.Range("P3").Value) - FormatCurrency(sh1.Range("P3").Value)
Label192.Caption = FormatCurrency(sh.Range("P4").Value) - FormatCurrency(sh1.Range("P4").Value)
Label195.Caption = FormatCurrency(sh.Range("P5").Value) - FormatCurrency(sh1.Range("P5").Value)
'Label199.Caption = FormatCurrency(sh.Range("P7").Value + sh.Range("P8").Value + sh.Range("P9").Value + sh.Range("P10").Value)

End Sub
221937
221938
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,827
Excel Vers. ve Dili
2019 Türkçe
Dosyanız görmeden sadece şunu söyleyebilirim.

sh P2 den sh1 P2 yi çıkarmak istiyorsunuz.
Tip uyuşmazlığı hatası aldığınıza göre bu iki hücreden en az birisi rakam değil.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,827
Excel Vers. ve Dili
2019 Türkçe
Label193.Caption = FormatCurrency(sh.Range("P2").Value ) - FormatCurrency( sh1.Range("P2").Value)
Kırmızı renk yaptığım kısımları silin. Aşağıdaki gibi olmalı.
Benzer diğer satırları da bu şekilde düzeltin.
Kod:
Label193.Caption = FormatCurrency(sh.Range("P2").Value - sh1.Range("P2").Value)
 
Katılım
12 Ocak 2009
Mesajlar
838
Excel Vers. ve Dili
2003
Altın Üyelik Bitiş Tarihi
07-02-2024
Label193.Caption = FormatCurrency(sh.Range("P2").Value ) - FormatCurrency( sh1.Range("P2").Value)
Kırmızı renk yaptığım kısımları silin. Aşağıdaki gibi olmalı.
Benzer diğer satırları da bu şekilde düzeltin.
Kod:
Label193.Caption = FormatCurrency(sh.Range("P2").Value - sh1.Range("P2").Value)
İlgili satırları tekrar düzenledim.
Kod:
Label193.Caption = FormatCurrency(sh.Range("P2").Value - sh1.Range("P2").Value)
Label194.Caption = FormatCurrency(sh.Range("P3").Value - sh1.Range("P3").Value)
Label192.Caption = FormatCurrency(sh.Range("P4").Value - sh1.Range("P4").Value)
Label195.Caption = FormatCurrency(sh.Range("P5").Value - sh1.Range("P5").Value)
Bu kod ile OCAK 2020 sekmesindeki P2 hücresini ARALIK 2019 sekmesindeki P2 hücresinden çıkarıp label193 te göstermesi gerekirken çıkarma işlemini yapmadığı gibi combobox5 te ay seçimi yapınca da Set sh1 = Sheets(OncekiAy)satırında hata veriyor.
221942
221941
Label193.Caption = FormatCurrency(sh.Range("P2").Value - sh1.Range("P2").Value)kodundaki değişkeni manuel olarak düzenleyince Label193.Caption = FormatCurrency(Sheets("OCAK 2020").Range("P2").Value - Sheets("ARALIK 2019").Range("P2").Value)kod çalışıyor, ancak döngüye alınca hata veriyor.
221943
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,827
Excel Vers. ve Dili
2019 Türkçe
O belirttiğiniz kodları aşağıdakiler ile değiştirin.

Kod:
Private Sub ComboBox5_Change()
Dim sh As Worksheet, sh1 As Worksheet
    If ComboBox5.ListIndex = 0 Then
        OncekiAy = ComboBox5.List(ComboBox5.ListCount - 1)
    Else
        OncekiAy = ComboBox5.List(ComboBox5.ListIndex - 1)
    End If
Set sh = Sheets(ComboBox5.Value)
Set sh1 = Sheets(OncekiAy)
Bul = WorksheetFunction.SumIfs(sh.Range("g2:g18"), sh.Range("f2:f18"), "TEB Bonus *7887-S")
Label145.Caption = FormatCurrency(Bul)
 
Katılım
12 Ocak 2009
Mesajlar
838
Excel Vers. ve Dili
2003
Altın Üyelik Bitiş Tarihi
07-02-2024
O belirttiğiniz kodları aşağıdakiler ile değiştirin.

Kod:
Private Sub ComboBox5_Change()
Dim sh As Worksheet, sh1 As Worksheet
    If ComboBox5.ListIndex = 0 Then
        OncekiAy = ComboBox5.List(ComboBox5.ListCount - 1)
    Else
        OncekiAy = ComboBox5.List(ComboBox5.ListIndex - 1)
    End If
Set sh = Sheets(ComboBox5.Value)
Set sh1 = Sheets(OncekiAy)
Bul = WorksheetFunction.SumIfs(sh.Range("g2:g18"), sh.Range("f2:f18"), "TEB Bonus *7887-S")
Label145.Caption = FormatCurrency(Bul)
Üstat hakkınızı helal edin, ancak aynı hata devam ediyor.
221945
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,827
Excel Vers. ve Dili
2019 Türkçe
Fare işaretcisini OncekiAy üzerine getirdiğinizde çıkan değer nedir?
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,827
Excel Vers. ve Dili
2019 Türkçe
Örnek dosyada herhangi bir sorun yok ben kodları çalıştırıyorum hata vermiyor.
Kodları başka bir dosyada mı deniyorsunuz?

1- Dosyanızda bu isimde OncekiAy=Aralık 2020 bir sayfa var mı? Boşluklar dahil kontrol edin.
Mesela Range("A1")= OncekiAy satırını elkleyin.
Sonra A1 hücresinde yazan metni inceleyin aynı isimde sayfa var mı? Varsa karakter sayıları ve boşluklar tam olarak eşleşiyor mu kontrol edin.

2- Eğer bu kodların çalıştığı dosya aktif değilse hata alırsınız.
Yani kodlar çalıştığı dosyada bu sayfayı aramıyor, aktif olan dosyada arıyor.
GİDERLER.xls dosyasını aktif edin sonra kodları çalıştırın.
 
Katılım
12 Ocak 2009
Mesajlar
838
Excel Vers. ve Dili
2003
Altın Üyelik Bitiş Tarihi
07-02-2024
Örnek dosyada herhangi bir sorun yok ben kodları çalıştırıyorum hata vermiyor.
Kodları başka bir dosyada mı deniyorsunuz?

1- Dosyanızda bu isimde OncekiAy=Aralık 2020 bir sayfa var mı? Boşluklar dahil kontrol edin.
Mesela Range("A1")= OncekiAy satırını elkleyin.
Sonra A1 hücresinde yazan metni inceleyin aynı isimde sayfa var mı? Varsa karakter sayıları ve boşluklar tam olarak eşleşiyor mu kontrol edin.

2- Eğer bu kodların çalıştığı dosya aktif değilse hata alırsınız.
Yani kodlar çalıştığı dosyada bu sayfayı aramıyor, aktif olan dosyada arıyor.
GİDERLER.xls dosyasını aktif edin sonra kodları çalıştırın.
Aynı dosyadan devam ediyorum. Acaba ofis sürümünden dolayı fark olabilirmi. Bende 64 bit ofis 2019 kurulu.
Sizde çalışan dosyayı ekleyebilirmisiniz.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,827
Excel Vers. ve Dili
2019 Türkçe
Dosyanız eski sürüm (.xls) versiyon sorunu olacağını sanmıyorum.
 

Ekli dosyalar

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,827
Excel Vers. ve Dili
2019 Türkçe
Başka açık Excel dosyası varsa tamamını kapatarak deneyin.
 
Katılım
12 Ocak 2009
Mesajlar
838
Excel Vers. ve Dili
2003
Altın Üyelik Bitiş Tarihi
07-02-2024
Başka açık Excel dosyası varsa tamamını kapatarak deneyin.
Çok teşekkür ederim hocam, sayenizde sorularım giderilmiş oldu.
Çalışmamla ilgili son isteğim; belge her açıldığı zaman OCAK 2020 sekmesi aktif oluyor. Belgeyi, içerisinde bulunduğumuz tarihe ait sekmeyi açacak şekilde düzenlerseniz çok memnun olurum. Misal Ekim 2020 ayındayız belge açılırken EKİM 2020 sayfası aktif olsun veya ComboBox5; içerisinde bulunduğumuz tarihe ait sekmeyi açsın.
221954
 

Ekli dosyalar

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,827
Excel Vers. ve Dili
2019 Türkçe
Rapor Formunun kod sayfasının en altında bulunan
Private Sub UserForm_Activate() kodları içerisindeki ComboBox5.ListIndex = 0 satırını aşağıdaki gibi yapın.
ComboBox5.ListIndex = Month(Now) - 1
 
Üst