EXCEL VBA ile ilgili bir soru? YARDIM...

Kodla Büyü

vakitsiz67

Aktif Üye
Mesajlar
127
Bir arkadaşım bugün şöyle bir soruyla geldi.

Örneğin bir hücrede sayı var onu değiştirdiğimizde ilk değeri ile arasındaki farkı bir başka hücreden çıkarmak istiyor.

Örneklemek gerekirse.

Örneğin
a1 hücresinin değeri 90 olsun.
b1 de 20 yazsın.

20 sayısını 35 yaptığım anda 35-20=15
15 otomatik olarak a1 hücresindeki değerden eksilecek. 90-15=75 olacak.
 
Sadece b1 hücresindeki değişiklik için mi bu dediğiniz olacak?
Eğer öyleyse
Sayfa adına sağ tıklayıp, kodu görüntüle deyin ve aşağıdaki kodu yapıştırın. Kod sadece b1'deki değişiklik üzerine işlem yapıyor.
Dim sondeger
Private Sub Worksheet_Change(ByVal Target As Range)
Dim deger
Dim fark
Application.EnableEvents = False
If Target = Range("B1") Then
deger = Target.Value
fark = deger - sondeger
sondeger = deger
Range("A1").Value = Range("A1").Value - fark
Target.Select
End If
Application.EnableEvents = True
End Sub
Aşağıdaki örneği inceleyin.
 

Ekli dosyalar

  • eksilt.zip
    8.4 KB · Görüntüleme: 29
yakuphan Hocam bir daha inceleyebilirmisiniz. Ekteki dosyada bir yerlerde hata var.
Yapmak istediğim tam olarak.
A1 hücresi 60
B1 hücresi 50 olsun.

b1 hücresini değiştirip 70 yaptığımızı düşünün. (sondeğer-ilk değer= 70-50=20)
a1 hücresi otomatik olarak 60-20=40
 
Problemin kaynağı, sondeger değişkeninin dosya ilk açıldığında boş olarak gelmesidir. Dosya ilk açıldığında sondeger değişkenine b1 hücresindeki değeri aktarmak için farklı bir yol izlemek zorunda kaldım. Kodu görüntüle dedikten sonra Module1 altındaki alt fonksiyonlar gerekli işleri yapıyor. Ayrıca Sayfa1'in kodlarında da yine kodlar bulunmakta.
Bu arada auto_open fonksiyonu dosya ilk açıldığında otomatik çalışan bir fonksiyondur. Bu fonksiyondaki sayfa1 ifadesi sayfa1'in çalışma sayfası adı değildir. Yani sayfa1'in ismini değiştirseniz bile bu ifade olduğu gibi kalmalıdır.
 

Ekli dosyalar

  • eksilt.zip
    9.6 KB · Görüntüleme: 29
yakuphan hocam gerçekten çok teşekkür ederim. Sorun çözüldü. Bu kodlarda nasıl a2-b2, a3-b3, a4-b4... hücreler için çoğaltabilirim.
 
vakitsiz67' Alıntı:
yakuphan hocam gerçekten çok teşekkür ederim. Sorun çözüldü. Bu kodlarda nasıl a2-b2, a3-b3, a4-b4... hücreler için çoğaltabilirim.
Keşke ta en baştan böyle istediğiniz söyleseydiniz. Özellikle ilk mesajımda da sormuştum. Neyse, kodlarda düzenleme yapılarak halledilebilir. Ancak öyle sınırsız hücrede değil de örneğin b2'den b100'e kadar ya da benzer bir sınır söylerseniz ona göre bir çalışma yapılabilir.
 
Hocam haklısınız
en başta söylemem gerekirdi bu ayrıntıyı. A1 be b1 için işlem yapıldığında diğerlerine uygulaya bileceğimi düşünmüştüm. Ama kodları incelediğimde ona göre kod yazmak gerektiğini anladım.

Aslında aynı işlemi
a1...b1
a2....b2
a3...b3
..........
.....
.........
a1000...b1000 kadar uygulaman gerekiyor.
 
Ekdeki dosyada gerekli düzenlemeler yapılmıştır.
 

Ekli dosyalar

  • eksilt.zip
    19.1 KB · Görüntüleme: 22
Geri
Üst