Excel Forum
ALTIN ÜYELİK Hakkında Bilgi


Geri Git   Excel Forum > EXCEL-Soruları > Makro-VBA
Atatürk
Şifremi Unuttum

DUYURU SİSTEMİ / REKLAM PANOSU

Makro-VBA Makro veya VBA ile ilgili sorularınızı buraya gönderebilirsiniz.
Dosya ekleyebilirsiniz

Özel Arama


Yanıtla
 
Paylaş Konu Araçları Görünüm Modları
Eski 06-01-2018, 12:33   #1
mars2
Altın Üye
 
Giriş: 02/09/2004
Mesaj: 311
Varsayılan Ön muhasebe

İyi Günler;
Excel çalışma kitabımda her ay için 10'ar günlük ön kayıt tablosu bulunmaktadır.
Bu sayfalarda kayıt edilen koda göre sayfa açması ve tüm sayfalarda aynı kodlu olanları altta kayıtemek istiyorum.


Örnek :
Ocak10 sayfasının A sutununda bulunan 792.01 kod bulunması halinde 792.01 sayfanın C sutununa bedeli aynı anda kayıt yapmasını,
eğer 792.01 kod B sutunda bulunması halind ise 792.01 sayfasının D sutununa bedeli kayıt yapmasını istemekteyim.

Konu hakkında yardımcı olacak kardaşlara şimdiden teşekkür ederim.
Eklenmiş Dosyalar
Dosya Türü: xlsx ön muhasebe.xlsx (14.8 KB, 29 Görüntülenme)
mars2 Çevrimiçi   Alıntı Yaparak Cevapla
Eski 06-01-2018, 14:08   #2
YUSUF44
Destek Ekibi
 
YUSUF44 kullanıcısının avatarı
 
Giriş: 04/01/2006
Şehir: Manisa, Kula
Mesaj: 6,708
Excel Vers. ve Dili:
İş : Ofis 2016 - Türkçe Ev: Ofis 2016 - Türkçe
Varsayılan

Aşağıdaki kodları dönem sayfalarının (Ocak10, Ocak20 vs) kod bölümüne (sayfa adına sağ tıklayıp kod görüntüle deyince açılan sayfaya) yapıştırıp deneyiniz:

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Private Sub Worksheet_Change(ByVal Target As Range)
    son = WorksheetFunction.Max(Cells(Rows.Count, "A").End(3).Row, Cells(Rows.Count, "B").End(3).Row) + 1
    sayfalar = Sheets.Count
    dönem = ActiveSheet.Name
    a = Target.Row
If Intersect(Target, Range("A2:B" & son)) Is Nothing Then GoTo 10
    For i = 1 To sayfalar
        If Sheets(i).Name & "a" = Target & "a" Then
            kod = "Var"
        End If
    Next
    If kod <> "Var" Then
        Sheets.Add After:=ActiveSheet
        ActiveSheet.Name = Target
        ActiveSheet.[A1] = "Tarih"
        ActiveSheet.[B1] = "İzahat"
        ActiveSheet.[C1] = "Borç TL"
        ActiveSheet.[D1] = "Alacak TL"
        ActiveSheet.[A1:D1].Borders.LineStyle = xlContinuous
        ActiveSheet.[A1:D1].Font.Bold = True
        ActiveSheet.[A1:D1].HorizontalAlignment = xlCenter
        ActiveSheet.[A1:D1].VerticalAlignment = xlCenter
    End If
    Sheets(dönem).Activate
10:
If Intersect(Target, Range("E2:F" & son)) Is Nothing Then Exit Sub
        If Target.Offset(0, -4) = "" Then
            MsgBox "Lütfen önce " & Target.Offset(-(a - 1), -4) & "nu giriniz", vbCritical
            Application.EnableEvents = False
            Target = ""
            Application.EnableEvents = True
            Exit Sub
        End If
    
    For i = 1 To sayfalar
        If Cells(a, "A") <> "" Then
            If Sheets(i).Name & "a" = Cells(a, "A") & "a" Then
                kod = "Var"
            End If
        Else
            If Sheets(i).Name & "a" = Cells(a, "B") & "a" Then
                kod = "Var"
            End If
        End If
    Next
    
    If kod <> "Var" Then
        Sheets.Add After:=ActiveSheet
        If Cells(a, "A") <> "" Then
            ActiveSheet.Name = Cells(a, "A")
        Else
            ActiveSheet.Name = Cells(a, "B")
        End If
        
        ActiveSheet.[A1] = "Tarih"
        ActiveSheet.[B1] = "İzahat"
        ActiveSheet.[C1] = "Borç TL"
        ActiveSheet.[D1] = "Alacak TL"
        ActiveSheet.[A1:D2].Borders.LineStyle = xlContinuous
        ActiveSheet.[A1:D1].Font.Bold = True
        ActiveSheet.[A1:D1].HorizontalAlignment = xlCenter
        ActiveSheet.[A1:D1].VerticalAlignment = xlCenter
        ActiveSheet.[C2] = Cells(a, "E")
        ActiveSheet.[D2] = Cells(a, "F")
        ActiveSheet.[C2:D2].NumberFormat = "#,##0.00 $"
    
    Else
        For i = 1 To sayfalar
            If Cells(a, "A") <> "" Then
                If Sheets(i).Name & "a" = Cells(a, "A") & "a" Then
                    yeni = Sheets(i).Cells(Rows.Count, "A").End(3).Row + 1
                    Sheets(i).Cells(yeni, "A") = Date
                    Sheets(i).Cells(yeni, "A").NumberFormat = "dd/mm/yyyy"
                    Sheets(i).Cells(yeni, "B") = Cells(a, "C")
                    Sheets(i).Cells(yeni, "C") = Cells(a, "E")
                    Sheets(i).Cells(yeni, "D") = Cells(a, "F")
                    Sheets(i).Cells(yeni, "C").NumberFormat = "#,##0.00 $"
                    Sheets(i).Cells(yeni, "D").NumberFormat = "#,##0.00 $"
                    Sheets(i).Range("A" & yeni & ":D" & yeni).Borders.LineStyle = xlContinuous
                End If
            Else
                If Sheets(i).Name & "a" = Cells(a, "B") & "a" Then
                    yeni = Sheets(i).Cells(Rows.Count, "A").End(3).Row + 1
                    Sheets(i).Cells(yeni, "A") = Date
                    Sheets(i).Cells(yeni, "A").NumberFormat = "dd/mm/yyyy"
                    Sheets(i).Cells(yeni, "B") = Cells(a, "C")
                    Sheets(i).Cells(yeni, "C") = Cells(a, "E")
                    Sheets(i).Cells(yeni, "D") = Cells(a, "F")
                    Sheets(i).Cells(yeni, "C").NumberFormat = "#,##0.00 $"
                    Sheets(i).Cells(yeni, "D").NumberFormat = "#,##0.00 $"
                    Sheets(i).Range("A" & yeni & ":D" & yeni).Borders.LineStyle = xlContinuous
                End If
            End If
        Next
    End If
    
    Sheets(dönem).Activate

End Sub
__________________


Sorularınızı örnek dosyayla desteklemeniz çözüme ulaşmanızı kolaylaştırır.

Altın Üye olmanızı öneririm. Altın Üye değilseniz dosyanızı dosya yükleme sitelerinden birine yükleyip linkini paylaşabilirsiniz.
YUSUF44 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 06-01-2018, 21:10   #3
mars2
Altın Üye
 
Giriş: 02/09/2004
Mesaj: 311
Varsayılan

Sayın Yusuf44;
Cevabınız için teşekkürler. Yapmak istediğim gibi ancak,
1- A sutunda boş hücreye bastığımda yeni boş sayfa açılıyor,
2- aynı hücreye ikinci kec bastığımda yeniden kayıt yapmak olup bu ise sonuçta yanlış hesaplamalara neden olabilecektir.
mars2 Çevrimiçi   Alıntı Yaparak Cevapla
Eski 06-01-2018, 21:32   #4
YUSUF44
Destek Ekibi
 
YUSUF44 kullanıcısının avatarı
 
Giriş: 04/01/2006
Şehir: Manisa, Kula
Mesaj: 6,708
Excel Vers. ve Dili:
İş : Ofis 2016 - Türkçe Ev: Ofis 2016 - Türkçe
Varsayılan

Verdiğim kodlarda sadece hücre seçmeye bağlı herhangi bir işlem yoktur. Bu nedenle boş veya dolu hücreyi seçtiğinizde çalışmaz ve işlem yapmaz. A-b-E ve F sütunlarında "değişiklik yapıldığında" çalışır. Bir şeyleri yanlış mı yaptınız acaba?
__________________


Sorularınızı örnek dosyayla desteklemeniz çözüme ulaşmanızı kolaylaştırır.

Altın Üye olmanızı öneririm. Altın Üye değilseniz dosyanızı dosya yükleme sitelerinden birine yükleyip linkini paylaşabilirsiniz.
YUSUF44 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 07-01-2018, 17:52   #5
mars2
Altın Üye
 
Giriş: 02/09/2004
Mesaj: 311
Varsayılan

Sayın Yusuf44;

Verdiğiniz kodu Ocak10 sayfasına yükledim.
Daha önce de bahsettiğim gibi A veyA B sutunundaki boş hücreye Change yaptığımda, ActiveSheet.Name = Target satırında hata vermekte olup sonra yeni bir boş sayfa açılmakta (Sayfa3 gibi)
Kayıt olan hücreye ikinci kez bastığımda yeniden kayıt yapmak olup bu ise sonuçta yanlış hesaplamalara neden olabilecektir.

Örneği yeniden ekledim.
Eklenmiş Resimler
Dosya Türü: jpg hata.jpg (20.0 KB, 2 Görüntülenme)
Eklenmiş Dosyalar
Dosya Türü: xlsm ön muhasebe.xlsm (36.4 KB, 16 Görüntülenme)
mars2 Çevrimiçi   Alıntı Yaparak Cevapla
Eski 07-01-2018, 18:21   #6
YUSUF44
Destek Ekibi
 
YUSUF44 kullanıcısının avatarı
 
Giriş: 04/01/2006
Şehir: Manisa, Kula
Mesaj: 6,708
Excel Vers. ve Dili:
İş : Ofis 2016 - Türkçe Ev: Ofis 2016 - Türkçe
Varsayılan

Hücre boş olduğunda işlem yapmaması için ikinci satır olarak şu satırı kullanın (Private ile son satırları arasına):

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
If Target = "" Then Exit Sub
Kayıt olan hücreye ikinci kez bastığımda ile ilgili hatayı anlamadım.
__________________


Sorularınızı örnek dosyayla desteklemeniz çözüme ulaşmanızı kolaylaştırır.

Altın Üye olmanızı öneririm. Altın Üye değilseniz dosyanızı dosya yükleme sitelerinden birine yükleyip linkini paylaşabilirsiniz.
YUSUF44 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 08-01-2018, 18:48   #7
mars2
Altın Üye
 
Giriş: 02/09/2004
Mesaj: 311
Varsayılan

Sayın Yusuf44;
Cevabuınız için teşekkürler,
Kayıt olan hücreye ikinci kez bastığımda ile ilgili hatayı anlamadığınız beyan etmişsiniz.

Örnek:
A sutundaki hücreye 255.01 kodu E sutundaki hücreye 2.500,00 yazıp kayıt ettikten sonra, tekrar aynı hücreye iki kez chang yaptığımda aynı kayıt 255.01 sayfasına kayıt yapmaktadır.

Tarih İzahat Borç TL Alacak TL
07.01.2018 Demirbaş 2.500,00 ₺
07.01.2018 Demirbaş 1.500,00 ₺
07.01.2018 Demirbaş 300,00 ₺
08.01.2018 Demirbaş 2.500,00 ₺
08.01.2018 Demirbaş 2.500,00 ₺
mars2 Çevrimiçi   Alıntı Yaparak Cevapla
Eski 09-01-2018, 19:23   #8
YUSUF44
Destek Ekibi
 
YUSUF44 kullanıcısının avatarı
 
Giriş: 04/01/2006
Şehir: Manisa, Kula
Mesaj: 6,708
Excel Vers. ve Dili:
İş : Ofis 2016 - Türkçe Ev: Ofis 2016 - Türkçe
Varsayılan

Sanıyorum hata yapıldığında düzeltme işleminden bahsediyorsunuz. Bunu yapmak zor. Çünkü isteğiniz kod girildiğinde sayfa açılsın, tutar girildiğinde ilgili sayfaya eklensin şeklindeydi. Bu da verdiğim şekilde yapılır. Sayfada olan her değişiklikte kodlar çalışır ve sayfa yoksa sayfa açar, tutar girilirse ilgili sayfaya ekleme yapar.

Düzeltme için çok farklı bir düzen kurmak gerekiyor. Öncelikle düzeltme yapılan satırdaki kodun sayfasında hangi satırın düzeltileceğinin bilinmesi gerekiyor. Bunun için de yevmiye numarası gibi bir numara sayfalara eklenip, o yevmiye ile ilgili işlem yapıldığında sayfalarda o yevmiyeyi arayıp düzeltme yaptırılabilir.

Ancak ben maalesef nasıl yapılacağını kuramadım. Çünkü kodda düzeltme yapıldığında o kodun sayfasındaki satırın silinmesi, yeni kod için (eğer yoksa) sayfa açılması, buraya yeni bilgilerin girilmesi gibi biraz karışık bir kontrol ve uygulama düzeni gerekiyor.

Ben olsam, her ay için en az 3 sayfa ve her kod için bir sayfa oluşturmak yerine tek bir sayfada icmal şeklinde tüm bilgileri kaydeder, başka bir sayfada da ister özet tablo, ister başka yöntemlerle istediğim raporları çıkarırdım. Sizin çalışma yönteminiz excel için pek uygun değil. İki sayfaya hakim olmak onlarca/yüzlerce sayfaya hakim olmaktan çok daha kolaydır.
__________________


Sorularınızı örnek dosyayla desteklemeniz çözüme ulaşmanızı kolaylaştırır.

Altın Üye olmanızı öneririm. Altın Üye değilseniz dosyanızı dosya yükleme sitelerinden birine yükleyip linkini paylaşabilirsiniz.
YUSUF44 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 10-01-2018, 19:17   #9
mars2
Altın Üye
 
Giriş: 02/09/2004
Mesaj: 311
Varsayılan

Sayın Yusuf44;
İyi akşamlar;
önerileriniz için teşekkür ederim, ancak bu önerileriniz doğrultusunda hazırlanmış örnekler bulunmaktamıdır. Yada böyle bir çalışmanız olması halinde sunabilmeniz mümkün müdür.
mars2 Çevrimiçi   Alıntı Yaparak Cevapla
Eski 12-01-2018, 21:08   #10
YUSUF44
Destek Ekibi
 
YUSUF44 kullanıcısının avatarı
 
Giriş: 04/01/2006
Şehir: Manisa, Kula
Mesaj: 6,708
Excel Vers. ve Dili:
İş : Ofis 2016 - Türkçe Ev: Ofis 2016 - Türkçe
Varsayılan

Forumda Ön muhasebe ya da Muhasebe ya da hesap kodları şeklinde arama yapıp konuları incelemenizi öneririm.
__________________


Sorularınızı örnek dosyayla desteklemeniz çözüme ulaşmanızı kolaylaştırır.

Altın Üye olmanızı öneririm. Altın Üye değilseniz dosyanızı dosya yükleme sitelerinden birine yükleyip linkini paylaşabilirsiniz.
YUSUF44 Çevrimdışı   Alıntı Yaparak Cevapla
Yanıtla


Konu Araçları
Görünüm Modları

Gönderme Kuralları
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
SimgelerAçık
[IMG] kodu Açık
HTML kodu Kapalı


Saat 20:02


Bu forum Elit NET - www.elitnet.com.tr tarafından sunulmaktadır.

Excel Eğitimi - Mobil Uygulama - Çorlu - Çorlu Web Tasarım -- Beylikdüzü mali müşavir - Beylikdüzü mali müşavir - Lingerie - Dyeing Machine - Karton Bardak- Karton Bardak- Çorlu Dil Konuşma Terapisti- Çorlu Dil Konuşma Terapisti- Çorlu Konuşma Terapisti- Çorlu Konuşma Terapisti- Çorlu Özel Eğitim- Site Yönetimi- Pronet Tekirdağ- Çorlu Kamera- Pronet Edirne- Pronet Çorlu- Çorlu Araç Takip- Rampa- Çorlu İnternet Sitesi- Çorlu Sürücü Kursu- Şişli Avukat- Çorlu Etüt- İstanbul Botanik- Çorlu Sigorta- Kağıt Bardak- Kağıt Bardak- Çorlu Havuz- Çorlu Havuz- Çorlu Perde Yıkama- Okul Danışmanlık- ADR'li taşıma kabı imalatı- Mekanik Tesisat- Çorlu Grafik Tasarım- Çorlu Sondaj- Çorlu Etüt- Futbol Cafe- Beylikdüzü Temizlik- Çorlu Kurs- Çorlu Ders- İzmit Mimar- Hurda Bakır Kablo- Hurda Bakır Kablo- Çorlu Pronet- Çorlu Yönetim- Çorlu Apartman Yönetimi- Çorlu Marangoz- Çorlu Avukat-
Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden