• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Fiyat değişince, eski hesaplar değişmesin...

  • Konbuyu başlatan Konbuyu başlatan manly
  • Başlangıç tarihi Başlangıç tarihi
Katılım
25 Nisan 2005
Mesajlar
690
Excel Vers. ve Dili
Excel 2003 Türkçe
FİYAT sayfasındaki herhangi bir ürünün fiyatı değiştiğinde, VERİ sayfasında daha önce girilen ürün fiyat hesaplamaları değişmesin istiyorum.
 

Ekli dosyalar

Selamlar,

Geçici olarak ARAÇLAR-SEÇENEKLER-HESAPLAMA-ELLE menüsünü uygulayarak çözüm üretebilirsiniz.
 
Teşekkürler...
Evet geçici işimi görür ama,
Başka bir yolu yok mu? Kalıcı bir çözüm...
 
Selamlar,

Formüllerinizi makroya çevirirseniz kalıcı çözüm olur. Dilediğiniz zaman fiyatları güncelleyebilirsiniz.
 
Makroya çevirme konusunda yardımcı olur musunuz?...
 
Selamlar,

Aşağıdaki kodu denermisiniz.

Kod:
Option Explicit
 
Sub HESAPLA()
    Dim X As Long, Y As Byte
    
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    Sheets("VERİ").Select
    ActiveSheet.Unprotect "1"
    
    For X = 3 To Range("A65536").End(3).Row
        If Cells(X, "A") <> "" Then
            For Y = 7 To 77 Step 2
                If Cells(X, Y) = "" Then Cells(X, Y + 1) = 0
                If WorksheetFunction.CountIf(Sheets("FİYAT").Range("A:A"), Cells(1, Y)) = 0 Then
                    Cells(X, Y + 1) = 0
                Else
                    Cells(X, Y + 1) = WorksheetFunction.VLookup(Cells(1, Y), Sheets("FİYAT").Range("A:B"), 2, 0) * Cells(X, Y)
                End If
            Next
        End If
    Next
 
    ActiveSheet.Protect "1"
 
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
 
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Korhan hocam hesaplama makrosu çok güzel çalışıyor. Ama yeni bir kayıt yaptım. Mesela çay fiyatı 3 TL. hesaplamayı yaptı. İkinci kayıtta çay fiyatı 5 TL. yapıp hesaplattım. İlk kayıttaki veriyi de 5 TL.den hesaplayıp değiştirdi. Fiyat değiştiğinde önceki kayıtların hesapları sabit kalmalı...
 
Fiyat değiştiğinde önceki kayıtların hesapları sabit kalmalı...
 
Selamlar,

VERİ isimli sayfanızın kod bölümüne aşağıdaki kodu uygulayıp denermisiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("G3:BZ65536")) Is Nothing Then Exit Sub
    If Target.Column Mod 2 = 1 Then
       Application.ScreenUpdating = False
       Application.Calculation = xlCalculationManual
       
       ActiveSheet.Unprotect "1"
       
       If IsNumeric(Target) Then
           If WorksheetFunction.CountIf(Sheets("FİYAT").Range("A:A"), Cells(1, Target.Column)) = 0 Then
               Target.Next = 0
           Else
               Target.Next = WorksheetFunction.VLookup(Cells(1, Target.Column), Sheets("FİYAT").Range("A:B"), 2, 0) * Target
           End If
       End If
       
       ActiveSheet.Protect "1"
    
       Application.Calculation = xlCalculationAutomatic
       Application.ScreenUpdating = True
    End If
End Sub
 
Hocam işin içinden çıkamadım..Bu kodu tam olarak nereye eklemem gerekiyor.. Nereyi denediysem değişen bir şey olmadı..
 

Ekli dosyalar

Son düzenleme:
Selamlar,

VERİ isimli sayfanızın kod bölümüne aşağıdaki kodu uygulayıp denermisiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("G3:BZ65536")) Is Nothing Then Exit Sub
    If Target.Column Mod 2 = 1 Then
       Application.ScreenUpdating = False
       Application.Calculation = xlCalculationManual
       
       ActiveSheet.Unprotect "1"
       
       If IsNumeric(Target) Then
           If WorksheetFunction.CountIf(Sheets("FİYAT").Range("A:A"), Cells(1, Target.Column)) = 0 Then
               Target.Next = 0
           Else
               Target.Next = WorksheetFunction.VLookup(Cells(1, Target.Column), Sheets("FİYAT").Range("A:B"), 2, 0) * Target
           End If
       End If
       
       ActiveSheet.Protect "1"
    
       Application.Calculation = xlCalculationAutomatic
       Application.ScreenUpdating = True
    End If
End Sub


Hocam bu kodu "Thisworkbook" kısmına ekledim ama değişen bir şey yok...
 
Selamlar,

Yapmanız gereken işlem;

VERİ isimli sayfanızı seçin.
Sayfa ismi (sekmesi) üzerinde sağ klik yapın.
Açılan menüden KOD GÖRÜNTÜLE seçeneğini seçin.

Bu aşamadan sonra karşınıza kod editor penceresi gelecektir.
Sağ taraftaki beyaz alana vermiş olduğum kodu uygulayın.

Siz sayfada kahverengi sütunlara değer girdikçe hemen yanındaki sütunlara değerler gelecektir.
 

Ekli dosyalar

Selamlar,

Korhan Hocam çok teşekkürler...Ellerinize sağlık...

Hocam bir sorum daha olacak...Menü Butonuna basıp, çıkan Userformda YENİ KAYIT butonuna basınca gelen Userformda Müşteri No hanesi "B" sütunundaki en son sayıdan sonrası olsun istiyorum.
 
Selamlar,

"YeniKayit" isimli formunuzun kod bölümüne aşağıdaki kodu uygulayın.

Kod:
Private Sub UserForm_Initialize()
    TextBox2 = Range("B65536").End(3) + 1
End Sub
 
Çok Teşekkürler hocam ellerinize sağlık....


Hocam biraz çok oluyorum ama soru sordukça yeni şeyler öğreniyorum...

Fsütununda ve 2 'nci satırda ki formülleri de kaldırıp Makro yazabilir miyiz?...
 
Son düzenleme:
Sayı Korhan Ayhan elinize, aklınıza sağlık. Text lere formul atamayı bilmiyordum. Text1 e günü tarihini kendiliğinden getirmesi için aşağıdaki kodu yazdım ancak olmadı.

Private Sub UserForm_Click()
TextBox1 = TODAY()
End Sub
 
Selamlar,

#13 nolu mesajımdaki dosyayı güncelledim. İncelermisiniz.

Çok Teşekkürler hocam ellerinize sağlık....


Hocam biraz çok oluyorum ama soru sordukça yeni şeyler öğreniyorum...

Fsütununda ve 2 'nci satırda ki formülleri de kaldırıp Makro yazabilir miyiz?...
 
Sayı Korhan Ayhan elinize, aklınıza sağlık. Text lere formul atamayı bilmiyordum. Text1 e günü tarihini kendiliğinden getirmesi için aşağıdaki kodu yazdım ancak olmadı.

Private Sub UserForm_Click()
TextBox1 = TODAY()
End Sub

Selamlar,

Sn. serdarokan,

Siz kodu excel hücresine yazar gibi yazmışsınız. Kod bölümünde işler biraz değişiktir.

Sizim yazım şeklinizi aşağıdaki şekilde çalışır hale getirebiliriz. Fakat bu kullanım şekli pek doğru değildir. Ama sonuç üretir. Sizin uyguladığınız bölüm kırmızı renkli bölümdür. Ben ayrıca tarih görünümü vermek için mavi renkli bölümü ekledim.

Kod:
Private Sub UserForm_Click()
    TextBox1 = [COLOR=blue]Format([/COLOR][COLOR=red]Evaluate("=TODAY()")[/COLOR][COLOR=blue], "dd.mm.yyyy")[/COLOR]
End Sub

En uygun kullanım şekli olarak aşağıdaki şekilde kullanabilirsiniz.

Kod:
Private Sub UserForm_Click()
    TextBox1 = Format(Date, "dd.mm.yyyy")
End Sub
 
Geri
Üst