Soru Aktif hücre seçimi

Katılım
7 Aralık 2022
Mesajlar
11
Excel Vers. ve Dili
VBA
Arkadaşlar merhaba forumda yeniyim istediğim şeyi arattım ama bulamadım.

Aşağıdaki gibi bir bakım tablosu hazırlıyorum elimde 5 adet makina var ve 15 günde bir bakım yapılması gerekiyor. Gerçekleşen bakım tarihini yazdığımda En alt satıra otomatik makina adı ve gerçekleşen tarih üzerine 15 gün ekleyerek planlanan bakım tarihi isimli satır açması. Bu şekilde sadece gerçekleşen bakım tarihini girerek düzenli kayıt tutmuş olacağım. ileriki aşamalarda günü geçtiğinde yapılmadığında vs uyarı vermesini formül ile sağlayacağım ancak şuan ilk aşamada takıldım. Kendi yaptığım kod Makinayı yazıyor ama 15 gün ekleyerek planlanan taihi eklemiyor yapamadım :/ aşağıda paylaşıyorum yardımcı olur musunuz ?


Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("C:C")) Is Nothing Then

sonsatir = Cells(Rows.Count, "A").End(xlUp).Row

ActiveCell.EntireRow.Select
Target.EntireRow.Cells(ActiveCell + 1, 1).copy

Cells(sonsatir + 1, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

MsgBox "Kayıt Tamamlandı. Yeni Bakım Tarihi Planlandı"

End If
End Sub


Makina

Planlanan Bakım Tarihi

Gerçekleşen Bakım Tarihi

Makina 1

01.01.2023

01.01.2023

Makina 2

02.01.2023

02.01.2023

Makina 4

03.01.2023

03.01.2023

Makina 4

04.01.2023

04.01.2023

 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Yapmak istediğiniz anlaşılmıyor. Örnek bir excel dosyası hazırlayıp içerisinde gerekli açıklamarı detaylı ve göstererek yazarak dosya ekleyiniz.


.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Msgbox dan önce aşağıdaki satırı ilave ediniz.

Cells(Target.Row, "C") = Cells(Target.Row, "B") + 15

İstediğiniz bu mu?
 
Katılım
7 Aralık 2022
Mesajlar
11
Excel Vers. ve Dili
VBA
Merhabalar

Sizin koda göre yaptığımda aynı satırdaki planlanan tarihe kayıt yapmakta sizin kodu aşağıdaki gibi revize ettim. Bu şekilde de kayıt altında başka makinalar olduğunda hata vermekte. Değiştirilmiş exceli paylaşıyorum. sonuçta bakım yapılmamış makina kayıtlarıda olmalı.

Cells(Target.Row + 1, "C") = Cells(Target.Row, "B") + 15

Çalıştığım excel ;

 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Hatanın nedeni verdiğim kodla ilgili değil, o kodu silersenizde aynı hatayı alırsınız.

B8 hücresi şuanda boş. Buraya bir tarih girince olmasını istediğiniz nedir?
A11 değişecek sanırım ne olmalı?
B11 değişecek sanırım ne olmalı?
ve bunların yanında C8 mi değişecek. B8+15 olarak?
 
Katılım
7 Aralık 2022
Mesajlar
11
Excel Vers. ve Dili
VBA
Öncelikle ilginiz için teşekkür ederim. Paylaştığım exceldeki sistemi madde madde yazayım

1) A8 boş bu satır 1.makina planlanmış bakımını temsil ediyor. 1. Makinaya bakım yapıldığında en alta yeni satır açması gerekiyor ve 1. makinaya 15 gün sonra yapılacak bakımın makinasını yani 1. makina ve planlanmış bakım tarihine de A8 hücresine girdiğimiz bakım tarihi üzerine 15 gün ekleyerek yazması gerekli
2) Aralarda başka makinaların kayıtlarıda olabilir sonuçta her makinanın kayıt tarihi farklı olabilir. Bu kayıtların birbirinden etkilenmemesi gerek.
3) en alt satırdaki kayıta gerçekleşen tarih bölümünü girdiğimde sorun olmadan çalışıyor araya bakım bekleyen makina kayıtları girdiğinde hata veriyor
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
B8 tarih girince.
A11 = "D_BMK_01"
B11 = ""
C11 = [B8] + 15 mi olmalı?
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Doğru anladım umarım. Kodları aşağıdakilerle değiştirerek deneyiniz.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub
   
    sonsatir = Cells(Rows.Count, "A").End(xlUp).Row + 1
   
    Cells(sonsatir, "A") = Cells(Target.Row, "A")
    Cells(Target.Row + 1, "C") = Cells(Target.Row, "B") + 15
    Cells(Target.Row, "D").copy Cells(sonsatir, "D")

    MsgBox "Kayıt Tamamlandı. Yeni Bakım Tarihi Planlandı"

End Sub
 
Katılım
7 Aralık 2022
Mesajlar
11
Excel Vers. ve Dili
VBA
Evet tek kayıt için yazığınız gibi. Yukarıdaki makinalarda bakım yapılmamış olsaydı ve 1. makinadan önce onlardan birine bakım yapılsa idi ise yazdığınız hücreler 1 satır aşağı kaymalıydı
 
Katılım
7 Aralık 2022
Mesajlar
11
Excel Vers. ve Dili
VBA
Yukarıda son gönderdiğiniz kod en alt satırdaki planlanan tarihe değil bir alt satırındaki kaydın planlanan tarihine 15 gün ekliyor. En alt satırda uygulaması gerek bu işlemi. Yadığınız kod aklıma bir fikir getirdi şuan yola çıkmam gerekiyor akşama deneme yapacağım muhtemelen olacaktır.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Yukarıda son gönderdiğiniz kod en alt satırdaki planlanan tarihe değil bir alt satırındaki kaydın planlanan tarihine 15 gün ekliyor. En alt satırda uygulaması gerek bu işlemi. Yadığınız kod aklıma bir fikir getirdi şuan yola çıkmam gerekiyor akşama deneme yapacağım muhtemelen olacaktır.
Ben hücre adresi vererek açıklamaya çalışıyorum. Siz de bu şekilde açıklarsanız anlaşılması daha kolay olacaktır.

1. Soru:
B8 E tarih girince.
A11 = hangi hücredeki değer gelmeli. ( örneğin buna ve aşağıdaki sorulara şu şekilde cevap verin... A11 hücresine A8 hücresindeki değer gelecek gibi ve neden.)
B11 = hangi hücredeki değer gelmeli yada boş mu kalmadı.
C11 = hangi hücredeki değer +15 gelmeli.

Eğer B8 e tarih girince yukarıda yazdığım A11,B11,C11 dışında bir hücrede değişiklik olacaksa onlarıda verdiğim örnek gibi yazınız.
Bu birinci aşama.
-----------------------------------------------------------------------------------

2. Soru:
Verdiğiniz örnekte B8 in dolu olduğu varsayarsak.
B11 e tarih girince.
A11 = hangi hücredeki değer gelmeli. ( örneğin buna ve aşağıdaki sorulara şu şekilde cevap verin... A11 hücresine A8 hücresindeki değer gelecek gibi ve neden.)
B11 = hangi hücredeki değer gelmeli yada boş mu kalmadı.
C11 = hangi hücredeki değer +15 gelmeli.

İşin tam mantığını adım adım anlaşılması lazımki ona göre algoritma oluşturalım.
 
Katılım
7 Aralık 2022
Mesajlar
11
Excel Vers. ve Dili
VBA
Merhaba sabah sizin kodunuz üzerinden denemeler yaptım aşağıdaki gibi yazdığımda çalıştı. Yardımınız için teşekkür ederim fikir gelişti. şimdi aşağıdaki koda kendime göre çeşitli uyarılar ekleyeceğim. kodun sadece her kayıtta bir kere tetiklenmesi, Tarih geçince uyarı vermesi gibi eklemeler yapmayı deneyeceğim. Teşekkür ederim

Güncel kod ;

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub

sonsatir = Cells(Rows.Count, "A").End(xlUp).Row + 1

Cells(sonsatir, "A") = Cells(Target.Row, "A")
Cells(sonsatir, "C") = Cells(Target.Row, "B") + 15
Cells(Target.Row, "D").copy Cells(sonsatir, "D")

MsgBox "Kayıt Tamamlandı. Yeni Bakım Tarihi Planlandı"

End Sub
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Rica ederim. Çözüldüğüne sevindim.

kodun sadece her kayıtta bir kere tetiklenmesi
Daha açıklayıcı yazar mısınız.
 
Katılım
7 Aralık 2022
Mesajlar
11
Excel Vers. ve Dili
VBA
Daha açıklayıcı yazar mısınız.
Şuan bir kere tetikleniyor kendimi doğru ifade edemedim. Bazı eklemeler yaptım "B" Stununuda etkilediği için kod tekrar tekrar tetikleniyor. bu kısımlarda uğraşacağım. 1-2 gün uğraşayım yapabileceğime inanıyorum kendimizi geliştirelim :)

Yardımınız için teşekkür ederim
 
Üst