• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Soru VBA Kodlarının sonucuna göre hücre değerini değiştirme

KarıncaZ

Yeni Üye
Katılım
9 Ocak 2022
Mesajlar
246
Çözümler
30
Aldığı beğeni
326
Excel V
Office 2024 TR
Konu Sahibi
Merhaba Arkadaşlar.

Ekteki bordro çalışmasını daha önce de formda paylaşmıştım. Personel sayıları arttıkça yavaşlama ile karşılaştık. Yapmak istediğim excel sayfalarındaki formülleri VBA ile yapmak. Bunu yaparken Netten Brüte hesaplamada bir sorunla karşılaştım.

VBA kodlarıyla Netten Brüte hesaplama yaparken VBA Kod yapısının sonucu şuna eşit olacak şekilde VBA kodlarındaki girdi verisini yani BrütÜcreti değiştir diyebiliyor muyuz.

Do While yada Do Until ile yapmaya çalıştım ancak yapamadım. Hesaplamanın sonucu şu olan kadar girdi değerini değiştirerek hesaplamaya devam et diyemedim.

Kodlarda birde Ocak ayında hesaplama yapmayacak ancak Diğer aylarda hesaplama yapacak formüllerde mevcut. Devreden SGK Matrahlarıyla ilgili olan formüller.

Mevcut dosyada NettenBrüte Hesaplamayı, eğer günlük net ücreti girildi ise satırın en sonunda Haftasonu mesai ve haftaiçi mesai den net alacağını hesaplıyor. Net ücreti bu rakam olacak şekilde Brüt günlük ücreti değiştiriyor. Hedefara ile.

Yardımlarınız için şimdiden teşekkürler.
 

Ekli dosyalar

Konu Sahibi
Daha net açıklamak gerekirse
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Kodlarıyla sayfada formüller olduğu için NettenBrüte hesaplama yapabiliyorum. Net ücret istediğim rakam olana kadar günlük Brüt ücreti değiştiriyor. Böylelikle hesaplama gerçekleşiyor.

Bordro Hesaplamasını VBA kodlarına çevirdiğimde

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

kısmını gerçekleştiremedim. VBA kodlarındaki girdiyi artırarak devam et komutu vermem gerekiyor ancak gerçekleştiremedim.

Daha açıklayıcı olmuştur umarım.
İyi çalışmalar.
 
iyi açıklamışsın ancak ben anlamadım. bordro hesaplaması bilgileri nereden alıyor. açıkladığın kod hangi sayfada nerelere uygulanacak
 
Sayın KarıncaZ bu kodlarda hedef ara için gerekli
değişkenleri public olarak tanımlayın. O zaman işlem
esnekliğiniz artar. Hücreleri tekrar bu değişkenlere
atayabilirsiniz. İstediğiniz sonucu elde edene kadar da
değer artırımını yapabilirsiniz. Ben dosyanızı indirmiştim .
Ama kodlardaki activecell neye takabül ediyor anlayamadığım için
deneme yapamadım. Ama sanki public değişkenlerle bu sorunu aşarsınız gibi.
Tabi işiniz bitince değişkenleri boşaltmayı unutmamalısınız.
 
Konu Sahibi
Merhaba
Activecell, tablonun en sağında AW sütununda, günlük net ücreti girince alınacak net maaşı hesaplıyorum. Net maaş bu hücreyle eşit olacak şekilde Günlük Brüt Ücreti değiştiriyor. Böylelikle Netten Brüte hesaplamış oluyorum :)

Günlük brüt ücreti artırarak çözüme ulaştım ancak çok uzun sürdü, çünkü her seferinde 0,0001 artırıyorum net rakama ulaşmak için. Daha büyük rakamlarda artırınca her seferinde istediğim neticeye ulaşamıyorum, özellikle küsüratlı rakamlarda. O nedenle 0,0001 artırıyorum.

Hedefara ( GoalSeek ) bu artırımı kendisi yapıyor ve daha kısa sürüyor.
Çözücü makrosuyla daha kısa sürede hesaplanabiliyor ama onda da sayfada formüller varsa hesaplıyor. Hesaplamayı aşağıda bir kısmını paylaştığım gibi kodlarda yapınca Hedefara yada Çözücü kodlarını kullanamadım. Değişecek hücreyi kendim artırınca da belirttiğim gibi çook uzun sürüyor.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Merhaba,
Söz konusu alanda pek bilgili değilim, fakat 2022 yılı vergi istisnalarını kapsayan netten_brüte isimli bir çalışmam olmuştu. Dosyayı şifresiz bir şekilde buraya ekliyorum, dosya açıldıktan sonra alt+f11 kombinasyonuyla kodları görebilirsiniz. Sayfa1 kodlarında sanırım aradığınız tarzda döngüsel başvuru bulunuyor. İnceleyin isterseniz.
 

Ekli dosyalar

Konu Sahibi
Merhaba
Sayın excelcan ve Adnan ilginiz için teşekkür ederim.

Sayın arschimet ilginiz için teşekkürler. Dosyanızı inceledim ancak istediğimi bulamadım. Döngü ile ilgili bir durum değil talep ettiğim.

Dosyamın şimdilik son hali ekte. Brütten nete tüm hesaplamaları yapıyor. Hiçbir sıkıntı yok. 12 ayın tamamı hesaplana biliyor. Tüm kodlar açıktır. İnceleyebilirsiniz. Aktif olan satırdaki verilere göre hesaplama yapmaktadır.

İstediğim; Brütten nete hesaplama yaparken, Net ücret belirtilen ( Olması İstenen ) ücrete eşit değilse Günlük Brüt Ücreti artırarak / azaltarak hesaplamayı tekrar yapması. Artırım yada azaltım tutarını kendisi belirlemeli GoalSeek gibi.

Bu hesaplamayı ben Günlük Brüt Ücreti 0,0001 er artırarak/azaltarak yapabiliyorum ancak çok uzun sürüyor. GoalSeek yada Çözücü gibi bir çözüme ihtiyacım var. Bu çözümlerde sayfada formül olunca işe yarıyor, Formül yoksa çözüme de ulaştıramıyor.

Dosyaya göre Örnek vermek gerekirse;
AR sütunundaki Ödenecek Net Maaş değeri 5.000,00 olacak şekilde ( Bu tutarı AW sütununda belirtiyorum.)
E sütunundaki Bürüt Ücret ( Günlük ) tutarını değiştirecek. Tekrar hesaplayacak. Duruma göre Artıracak yada Azaltacak. Bunu da GoalSeek yada Çözücü yöntemiyle yani Artırım yada Azaltılacak tutarı kendisi belirleyerek yapacak.
 

Ekli dosyalar

Merhaba
Activecell, tablonun en sağında AW sütununda, günlük net ücreti girince alınacak net maaşı hesaplıyorum. Net maaş bu hücreyle eşit olacak şekilde Günlük Brüt Ücreti değiştiriyor. Böylelikle Netten Brüte hesaplamış oluyorum :)

Günlük brüt ücreti artırarak çözüme ulaştım ancak çok uzun sürdü, çünkü her seferinde 0,0001 artırıyorum net rakama ulaşmak için. Daha büyük rakamlarda artırınca her seferinde istediğim neticeye ulaşamıyorum, özellikle küsüratlı rakamlarda. O nedenle 0,0001 artırıyorum.

Hedefara ( GoalSeek ) bu artırımı kendisi yapıyor ve daha kısa sürüyor.
Çözücü makrosuyla daha kısa sürede hesaplanabiliyor ama onda da sayfada formüller varsa hesaplıyor. Hesaplamayı aşağıda bir kısmını paylaştığım gibi kodlarda yapınca Hedefara yada Çözücü kodlarını kullanamadım. Değişecek hücreyi kendim artırınca da belirttiğim gibi çook uzun sürüyor.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
Hocam konu dışı bir şey soracaktım. Kod editörünüz excel vba nın kendi kod editörü mü yoksa başka bir editör mü kullanıyorsunuz.
 
Konu Sahibi
Merhaba

Çalışmalarım sonucunda GoalSeek ile olmasa da bir çözüm buldum. Basitçe matematikteki Doğrusal Orantıyı kullanarak çözdüm. Net Ücret Hedef Net Ücretle aynı değilse doğrusal orantıyla brüt ücreti yeniden belirliyorum ve GoTo kullanımı ile hesaplamaların en başına geri dönüp tekrar hesaplatıyorum. Birkaç küsüratlı rakamlarda denedim çözüme ulaştı ancak ne kadar fazla denenirse o kadar iyi olur.
Net Ücret ( Günlük ) verisi yazılırsa Net ücretten Brüt ücreti hesaplaya biliyor.
Hesaplamanın yapılabilmesi için Çalışma Gün Sayısının da yazılması gerekir.

Geliştirmek istediğim konular var. Bunlar ;

1-) Şimdilik her sayfada kod var, bu kodların %90 ı aynı. Devreden SGK Matrahları ile Kümülatif veriler bir önceki aya göre toplamları aldığından her sayfada diğer kodları da tekrar ettim. Hesaplamalarda Aktif Sayfayı Set S1 e, Aktif Sayfanın adından bir önceki sayfanın ismini de Set S2 ye tanımlaya bilirsek tüm kodları tek bir modüle yazmak yeterli olacak ancak bu işlemi yapamadım.

2-) PersonelToplam sayfasına Personellerin Ad soyad ve TC Kimlik Numaraları ile İşe giriş ve İşten çıkış tarihlerini yazılacak, Hesaplama yapılacak ayda İşe Giriş ve İşten Çıkış tarihlerine çalışan personellerin listelenmesini istiyorum. Bu işlem için uğraşıyorum.

İlgilenen arkadaşlar için dosyanın son hali ektedir.
 

Ekli dosyalar

modül içerisine değişkenlerinizi Public olarak tanımlama yapıp;
Sayfa Kodlarına ise yalnızca Set S1="Bu sayfa", ya da tetikleyiciye eğer şuysa s1= budur şeklinde değer atayabilirsiniz.
bu sayede modül içerisindeki kodlar sayfanızı tanıyacaktır.
Bu gibi değişkenleri public tanımlayıp, işiniz bitince değişkenlerin içerisini boşaltmalısınız.
Ben biraz toparlayayım dedim ama, hangi formül nerede aynı nerede değil bilemediğimden :D yalnızca küçük bir tavsiye vermekle yetindim.
 
01 nolu sayfa için örnek yaptım modül 01 sayfasındaki gibi çağrılacak sadece sayfa isimleri değişecek
 

Ekli dosyalar

Geri
Üst