Eski kaydı güncelleme

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Merhaba arkadaşlar
Uzun bir aradan sonra tekrar sizlerle görüşmekten mutluyum. Şu aralar yeni bir dosya üzerinde çalışıyorum. Aşağıda yeni veri kaydetmek için kullandığım makroyu koydum.Yapamadığım ise şu;dosyada hazır bir forma girilen verileri bir referans kayıt numarasıyla database kaydetmek, ama kayıt öncesi makro databasede aynı kayıt numarası var mı yok mu kontrol edecek, eğer yoksa yeni kayıt yapacak, varsa aynı referans kayıt numarasına ait eski kaydı bulup değişiklikleri güncelleyecek. Yalnız makroda bunu nasıl yapacağımı çözemedim. Bu konuda bana yardımcı olursanız çok sevinirim. Şimdiden çok teşekkürler...

Sub verikaydetsc()
Sheets("Giriş Formu Baskı").Rows("57:57").Insert Shift:=xlDown
Sheets("Giriş Formu Baskı").Rows("56:56").Copy
Sheets("Giriş Formu Baskı").Rows("57:57").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Sheets("Giriş Formu").Range("L2").Select
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,253
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Konuyla ilgili küçük bir dosya üzerinde tam olarak ne yapmak istediğinizi açıklarsanız daha çabuk cevap alabilirsiniz.
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Merhaba

İstediğiniz gibi dosyayı ekledim. Giriş formu kısmında sarı renkli gördüğünüz alanlarda veri girişi yapılabiliyor, diğer alanlar kullanıcıya açık değil. Kullanıcı formu doldurduğunda (tamamını doldurabilir veya bir kısmını doldurabilir) formu kaydet düğmesine basarak formu Giriş formu baskı sayfasındaki A50'den başlayan kısma kaydolacak. Benim yapmak istediğim ise şu:yukarıda belirttiğim gibi daha önce girilmiş bir kaydın güncellenmesi gerekebiliyor. Bu nedenle Report Nr. referans alınarak eski kayıt aranmalı (arama yeri Giriş formu baskı sayfası), eğer varsa Giriş formu baskı sayfasında gösterilip güncellenmesi sağlanmalı (Giriş formundaki gibi).Eğer eski kayıt yoksa yeni kayıt olarak kayıt yapılmalı. Ayrıca geriye doğru Giriş formu baskı sayfasında (eğer form doldurulup kapatılmışsa) print out alabilmeli. Sanırım yeterince anlatabildim. Gördüğünüz gibi bayağı detaylı bir çalışma olacak, zorlanıyorum. Umarım başınızı ağrıtmamışımdır, yardımlarınız ve ilginiz için şimdiden teşekkürler.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,253
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Dosyanızda gerekli düzenlemeyi yaptım incelermisiniz. Yalnız sorunuzun aşağıdaki kısmını tam anlayamadım.

Ayrıca geriye doğru Giriş formu baskı sayfasında (eğer form doldurulup kapatılmışsa) print out alabilmeli.
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Sevgili Cost Control
Dostum müthişsin!!!Bu makroyu nasıl bu şekilde yazdığını merak ediyorum, elinde bir eğitim dökümanı varsa (eğer mahzuru yoksa) bende yararlanmak isterim. Soruna gelince, Giriş formu baskı sayfasında report no kısmında veri doğrulama kutusu vardı dikkat ettiysen. Forma giriş yapacak kişi eğer formun tamamı dolu değilse Giriş formu baskı sayfasında bir makro çalıştırarak bilgileri Giriş formu sayfasına atacak, verileri güncelledikten sonra kaydet makrosuyla kaydedecek. Eğer formun tamamı doluysa bu makroyu çalıştırmadan sadece çıktısını alacak. Umarım yeterli açıklamayı yapabilmişimdir. Elimde farklı formatlarda ama aynı işi yapması gereken 2 dosya daha var. Senin gönderdiğin örnekten yararlanarak çözmeye çalışacağım, umarım yeniden rahatsız edersem kızmazsın :) Emeğine sağlık...
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,253
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Övgüleriniz için teşekkür ederim. Makro yazmayı bu forumda öğrendim. Döküman olarak ta www.excel.web.tr forumunu önerebilirim.

Sorununuza gelince veri doğrulama kullandığınız hücrenin hiçbir yerle bağlantısı görünmüyor. "Giriş Formu Baskı" sayfasının boş olup olmadığı ne zaman kontrol edilecek. Ayrıca tam olarak ne yapmak istediğiniz çözümleyemedim. Neden derseniz ilk önce Giriş Formu sayfasından bilgileri diğer sayfaya kaydediyorsunuz sonrada diğer sayfa tamamen dolu değilse bilgileri tekrar Giriş formu sayfasına atsın diyorsunuz. Bu kısım kafamı karıştırdı.
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Merhaba

Biraz karışık olduğunun farkındayım, ayrıca rapor numarası kısmını henüz hazırlamamıştım. O yüzden herhangi bir bağlantı göremedin. Daha öncede anlattığım gibi bu form sürekli kullanılacak. Giriş formu sayfasından yapılan girişler, Giriş formu baskı sayfasındaki formun alt tarafında sabit bir alana database mantığında kaydedilecek.Ama bu kayıt iki şekilde olabilir.Ya formun tamamı doldurulur (form kapanmış olur), ya da form belli bir kısma kadar doldurularak daha sonra tamamı doldurulmak üzere saklanır.İşte burada rapor no kısmında bulunan (veri doğrulama kullanmak istedim, combo box'tan daha pratik geldi) açılabilir listeyle daha önce kayıt edilmiş rapor bilgileri formun tamamen doldurulması için geri çağrılacak. Bunu ancak Giriş formu baskı sayfasında yapabilirim diye düşündüm, çünkü bilgileri bu sayfada geri çağırıyorum. Formun tamamının doldurulması içinde, Giriş formu baskı sayfasında formu geri çağırıp, bir makroyla (henüz yapmadım) bilgileri Giriş formu sayfasına kopyalayacağım. Kullanıcı bu şekilde formun tamamını doldurduktan sonra senin yazdığın makroyu kullanarak son kayıt işlemini yapmış olacağım. Durum böyle, eğer senin ya da diğer arkadaşların aklına daha kısa bir yol gelirse önerilere her zaman açığım. Tekrar ilginiz ve alakanız için teşekkür ederim.
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Sevgili Cost Control

Makroyu aynı kitap içinde başka formatlı formlara uyguladım. Kaydetme formatı aynı, sadece sayfa isimleri ve hücre yerleri farklı, tüm bunları düzenlememe rağmen senin makrondaki gibi aynı kaydı bulup uyarmıyor, neyi yanlış yapıyorum?Ekte yazdığım makroyu gönderdim, yardımcı olursan sevinirim...
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,253
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Bu şekilde yardımcı olamayız. Kodun sonucunda ne oluyor hatamı veriyor belirtmemişsiniz. Dosyanızı eklerseniz yardımcı olmaya çalışırız.
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
On Error GoTo KAYIT satırını çalıştırmayınca Runtime error '91' hatası veriyor ve aşağıdaki satırda duruyor. :(

ARA = [A57:A65536].Find(What:=KRİTER, LookIn:=xlValues, LookAt:=xlWhole).Activate

Eğer On Error GoTo KAYIT satırını çalıştırırsam sadece kayıt yapıyor, daha önceden kaydın olup olmadığını sormuyor. Eğer eksik birşey varsa anlattıklarımda kusura bakmayın, acemiliğime verin... :) İlginiz için tekrar teşekkürler..
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,253
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Kullandığınız kodu aşağıdaki ile değiştirip denermisiniz.

Kod:
Sub KAYDET()
    On Error GoTo KAYIT
    Set S1 = Sheets("Giriş Formu-xxx")
    Set S2 = Sheets("Giriş Formu Baskı-xxx")
    Set KRİTER = Sheets("Giriş Formu-xxx").Range("Y1")
    S2.Select
    ARA = [A57:A65536].Find(What:=KRİTER, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
        , SearchFormat:=False).Activate
 
    If ARA = True Then
    ONAY = MsgBox("BU KAYIT DAHA ÖNCE İŞLENMİŞTİR. YAPTIĞINIZ DEĞİŞİKLİKLERİ ONAYLIYOR MUSUNUZ ?", vbCritical + vbYesNo, "DİKKAT !")
    If ONAY = vbNo Then
    [A1].Select
    S1.Select
    [A1].Select
    MsgBox "İSTEĞİNİZ ÜZERİNE İŞLEM İPTAL EDİLMİŞTİR.", vbInformation
    Exit Sub
    End If
        If ONAY = vbYes Then
        ActiveCell = S1.[Y1]
        ActiveCell.Offset(0, 1) = S1.[x2]
        ActiveCell.Offset(0, 2) = S1.[aa2]
        ActiveCell.Offset(0, 3) = S1.[f3]
        ActiveCell.Offset(0, 4) = S1.[f4]
        ActiveCell.Offset(0, 5) = S1.[v3]
        ActiveCell.Offset(0, 6) = S1.[v4]
        ActiveCell.Offset(0, 7) = S1.[f5]
        ActiveCell.Offset(0, 8) = S1.[v5]
        ActiveCell.Offset(0, 9) = S1.[f6]
        ActiveCell.Offset(0, 10) = S1.[l7]
        ActiveCell.Offset(0, 11) = S1.[t7]
        ActiveCell.Offset(0, 12) = S1.[d8]
        ActiveCell.Offset(0, 13) = S1.[l9]
        ActiveCell.Offset(0, 14) = S1.[t9]
        ActiveCell.Offset(0, 15) = S1.[f10]
        ActiveCell.Offset(0, 16) = S1.[t10]
        ActiveCell.Offset(0, 17) = S1.[f11]
        ActiveCell.Offset(0, 18) = S1.[t11]
        ActiveCell.Offset(0, 19) = S1.[y12]
        ActiveCell.Offset(0, 20) = S1.[y13]
        ActiveCell.Offset(0, 21) = S1.[y14]
        ActiveCell.Offset(0, 22) = S1.[y15]
        ActiveCell.Offset(0, 23) = S1.[y16]
        ActiveCell.Offset(0, 24) = S1.[c16]
        ActiveCell.Offset(0, 25) = S1.[e16]
        ActiveCell.Offset(0, 26) = S1.[g17]
        ActiveCell.Offset(0, 27) = S1.[j17]
        ActiveCell.Offset(0, 28) = S1.[n17]
        ActiveCell.Offset(0, 29) = S1.[t17]
        ActiveCell.Offset(0, 30) = S1.[z17]
        ActiveCell.Offset(0, 31) = S1.[c19]
        ActiveCell.Offset(0, 32) = S1.[u19]
        ActiveCell.Offset(0, 33) = S1.[w19]
        ActiveCell.Offset(0, 34) = S1.[y19]
        ActiveCell.Offset(0, 35) = S1.[aa19]
        ActiveCell.Offset(0, 36) = S1.[f20]
        ActiveCell.Offset(0, 37) = S1.[f21]
        ActiveCell.Offset(0, 38) = S1.[c23]
        ActiveCell.Offset(0, 39) = S1.[y23]
        ActiveCell.Offset(0, 40) = S1.[aa23]
        ActiveCell.Offset(0, 41) = S1.[c25]
        ActiveCell.Offset(0, 42) = S1.[w25]
        ActiveCell.Offset(0, 43) = S1.[y25]
        ActiveCell.Offset(0, 44) = S1.[aa25]
        ActiveCell.Offset(0, 45) = S1.[S26]
        ActiveCell.Offset(0, 46) = S1.[w26]
        ActiveCell.Offset(0, 47) = S1.[f27]
        ActiveCell.Offset(0, 48) = S1.[c29]
        ActiveCell.Offset(0, 49) = S1.[w29]
        ActiveCell.Offset(0, 50) = S1.[y29]
        ActiveCell.Offset(0, 51) = S1.[aa29]
        ActiveCell.Offset(0, 52) = S1.[c31]
        ActiveCell.Offset(0, 53) = S1.[u31]
        ActiveCell.Offset(0, 54) = S1.[w31]
        ActiveCell.Offset(0, 55) = S1.[y31]
        ActiveCell.Offset(0, 56) = S1.[aa31]
        ActiveCell.Offset(0, 57) = S1.[g32]
        ActiveCell.Offset(0, 58) = S1.[u32]
        ActiveCell.Offset(0, 59) = S1.[w32]
        ActiveCell.Offset(0, 60) = S1.[y32]
        ActiveCell.Offset(0, 61) = S1.[aa32]
        ActiveCell.Offset(0, 62) = S1.[g33]
        ActiveCell.Offset(0, 63) = S1.[w33]
        ActiveCell.Offset(0, 64) = S1.[y33]
        ActiveCell.Offset(0, 65) = S1.[aa33]
        ActiveCell.Offset(0, 66) = S1.[a35]
        ActiveCell.Offset(0, 67) = S1.[e35]
        ActiveCell.Offset(0, 68) = S1.[y35]
        ActiveCell.Offset(0, 69) = S1.[aa35]
        ActiveCell.Offset(0, 70) = S1.[a36]
        ActiveCell.Offset(0, 71) = S1.[b37]
        ActiveCell.Offset(0, 72) = S1.[y37]
        ActiveCell.Offset(0, 73) = S1.[aa37]
        ActiveCell.Offset(0, 74) = S1.[a38]
        ActiveCell.Offset(0, 75) = S1.[b39]
        ActiveCell.Offset(0, 76) = S1.[y39]
        ActiveCell.Offset(0, 77) = S1.[aa39]
        ActiveCell.Offset(0, 78) = S1.[t40]
        ActiveCell.Offset(0, 79) = S1.[y41]
        ActiveCell.Offset(0, 80) = S1.[d41]
        [A1].Select
        S1.Select
        [A1].Select
        MsgBox "KAYIT DEĞİŞTİRİLMİŞTİR.", vbInformation
        End If
        End If
        Exit Sub
    
KAYIT:
        SON = S2.[A65536].End(3).Row + 1
        Cells(SON, 1) = S1.[Y1]
        Cells(SON, 2) = S1.[x2]
        Cells(SON, 3) = S1.[aa2]
        Cells(SON, 4) = S1.[f3]
        Cells(SON, 5) = S1.[f4]
        Cells(SON, 6) = S1.[v3]
        Cells(SON, 7) = S1.[v4]
        Cells(SON, 8) = S1.[f5]
        Cells(SON, 9) = S1.[v5]
        Cells(SON, 10) = S1.[f6]
        Cells(SON, 11) = S1.[l7]
        Cells(SON, 12) = S1.[t7]
        Cells(SON, 13) = S1.[d8]
        Cells(SON, 14) = S1.[l9]
        Cells(SON, 15) = S1.[t9]
        Cells(SON, 16) = S1.[f10]
        Cells(SON, 17) = S1.[t10]
        Cells(SON, 18) = S1.[f11]
        Cells(SON, 19) = S1.[t11]
        Cells(SON, 20) = S1.[y12]
        Cells(SON, 21) = S1.[y13]
        Cells(SON, 22) = S1.[y14]
        Cells(SON, 23) = S1.[y15]
        Cells(SON, 24) = S1.[y16]
        Cells(SON, 25) = S1.[c16]
        Cells(SON, 26) = S1.[e16]
        Cells(SON, 27) = S1.[g17]
        Cells(SON, 28) = S1.[j17]
        Cells(SON, 29) = S1.[n17]
        Cells(SON, 30) = S1.[t17]
        Cells(SON, 31) = S1.[z17]
        Cells(SON, 32) = S1.[c19]
        Cells(SON, 33) = S1.[u19]
        Cells(SON, 34) = S1.[w19]
        Cells(SON, 35) = S1.[y19]
        Cells(SON, 36) = S1.[aa19]
        Cells(SON, 37) = S1.[f20]
        Cells(SON, 38) = S1.[f21]
        Cells(SON, 39) = S1.[c23]
        Cells(SON, 40) = S1.[y23]
        Cells(SON, 41) = S1.[aa23]
        Cells(SON, 42) = S1.[c25]
        Cells(SON, 43) = S1.[w25]
        Cells(SON, 44) = S1.[y25]
        Cells(SON, 45) = S1.[aa25]
        Cells(SON, 46) = S1.[S26]
        Cells(SON, 47) = S1.[w26]
        Cells(SON, 48) = S1.[f27]
        Cells(SON, 49) = S1.[c29]
        Cells(SON, 50) = S1.[w29]
        Cells(SON, 51) = S1.[y29]
        Cells(SON, 52) = S1.[aa29]
        Cells(SON, 53) = S1.[c31]
        Cells(SON, 54) = S1.[u31]
        Cells(SON, 55) = S1.[w31]
        Cells(SON, 56) = S1.[y31]
        Cells(SON, 57) = S1.[aa31]
        Cells(SON, 58) = S1.[g32]
        Cells(SON, 59) = S1.[u32]
        Cells(SON, 60) = S1.[w32]
        Cells(SON, 61) = S1.[y32]
        Cells(SON, 62) = S1.[aa32]
        Cells(SON, 63) = S1.[g33]
        Cells(SON, 64) = S1.[w33]
        Cells(SON, 65) = S1.[y33]
        Cells(SON, 66) = S1.[aa33]
        Cells(SON, 67) = S1.[a35]
        Cells(SON, 68) = S1.[e35]
        Cells(SON, 69) = S1.[y35]
        Cells(SON, 70) = S1.[aa35]
        Cells(SON, 71) = S1.[a36]
        Cells(SON, 72) = S1.[b37]
        Cells(SON, 73) = S1.[y37]
        Cells(SON, 74) = S1.[aa37]
        Cells(SON, 75) = S1.[a38]
        Cells(SON, 76) = S1.[b39]
        Cells(SON, 77) = S1.[y39]
        Cells(SON, 78) = S1.[aa39]
        Cells(SON, 79) = S1.[t40]
        Cells(SON, 80) = S1.[y41]
        Cells(SON, 81) = S1.[d41]
        [A1].Select
        S1.Select
        [A1].Select
        MsgBox "KAYIT İŞLEMİ TAMAMLANMIŞTIR.", vbInformation
End Sub
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Üzgünüm dostum, aşağıdaki hatayı vermeye devam ediyor.

(On Error GoTo KAYIT satırını çalıştırmayınca Runtime error '91' hatası veriyor.
ARA = [A57:A65536].Find(What:=KRİTER, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
, SearchFormat:=False).Activate)

Sorun nedir anlamadım? Herşey diğeriyle aynı olduğu halde neden çalışmaz? İnan kafam basmadı, yardımlarını bekliyorum...
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
yok mu bir fikri olan????
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,253
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Son gönderdiğim koddaki ARA ile başlayan satırı aşağıdaki gibi değiştirip denermisiniz.

Kod:
ARA = [A57:A65536].Find(What:=KRİTER, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True).Activate
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Merhabalar

Belki aynı şeyi duymaktan sıkıldınız ama yine olmadı. Aşağıdaki hata mesajını veriyor.
On Error GoTo KAYIT satırını çalıştırmayınca Runtime error '91' hatası veriyor.
"Object variable or with block variable not set"

Merak ettiğim nokta şu: sizde bu kod bu şekilde çalıştı mı? Eğer çalıştıysa ayarlarımızı karşılaştıralım diyeceğim ama diğer format için hazırladığınız makro çok güzel çalışıyor. Neyse, yardımlarınız bekliyorum, ilginiz ve emeğiniz için tekrar teşekkürler...
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,253
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Son eklediğiniz dosya üzerinde uyarladım test ettim çalışıyor. Çalışan dosyayı ekliyorum.
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Nihayet!!!! Sonunda çalıştı, herşey uygun. Cost Control emeğine ilgine, bilgine, yüreğine sağlık:)) Çok çok teşekkür ediyorum, sağol.
 
Üst