Worksheet_Change Yordamı İle Çoklu Koşullu Farklı Senaryoları Gerçekleştirme

DataMaestro
Mesajlar: 2
Kayıt: 14 Tem 2023, 21:14
Lokasyon: Antalya
Meslek: Turizm Ve Otel İşletmeciliği Meslek Elemanı
Adınız: Ömer Ali
Soyadınız: ÜZÜMCÜ

Worksheet_Change Yordamı İle Çoklu Koşullu Farklı Senaryoları Gerçekleştirme

Mesaj gönderen DataMaestro »

Sayın Formdaş Arkadaşlar,


Öncelikle sitemizin son güncelleme ile çok kullanışlı hale gediğini belirtmek isterim. Ellerinize, emeğinize ve bilgilerinize sağlık.
Ekteki örnek haftalık çalışma programında 2 farklı senaryoda 4 farklı koşula göre veri girişi kısıtlaması ile veri girişlerini kontrol altında tutmak istiyorum.
"H9:N60", "P9:V60", "X9:AD60", "AF9:AL60", "AN9:AT60", "AV9:BB60" verilerin girileceği hafta aralıkları olarak belirlenmiştir.
"OFF","A-OFF","B-OFF","C-OFF","E-OFF" kodları haftalık izin kodları olarak belirlenmiştir.
"OFF","A-OFF","B-OFF","C-OFF","E-OFF" bu kodlar hariç tüm kodlar ise Vardiya Kodları olarak velirlenmiştir.
Çalışmanın aktif sayfasında çalışacak olan kod ile "E9:E60" aralığındaki seçime göre "Hedef Hücre" ile "Hedef Olmayan Hücre"leri tespit ederek renklendiriyorum.
Tespit edilen Hedef Hücrelere, SARI renkli hücrelere haftalık izin günlerine ait "OFF","A-OFF","B-OFF","C-OFF","E-OFF" kodlarının yazılmasına doğrudan izin verilmelidir.
Tespit edilen Hedef Hücrelere, SARI renkli hücrelere "OFF","A-OFF","B-OFF","C-OFF","E-OFF" kodları HARİÇ farklı kodlar yazılmak istenince, şifre kontrolü yapılarak verini girişi veya değişikliğine izin verilmelidir.
Tespit edilen Hedef Olmayan Hücrelerde ise bu işlemlerim tam tersi işlemler yapılacaktır.
Tespit edilen Hedef Olmayan Hücrelere, YEŞİL renkli hücrelere haftalık izin günlerine ait "OFF","A-OFF","B-OFF","C-OFF","E-OFF" kodları yazılmak istenince, şifre kontrolü yapılarak verini girişi veya değişikliğine izin verilmelidir.
Tespit edilen Hedef Olmayan Hücrelere, YEŞİL renkli hücrelere "OFF","A-OFF","B-OFF","C-OFF","E-OFF" kodları HARİÇ farklı kodların yazılmasına doğrudan izin vermelidir.
Önce Hedef Hücre Senaryosunu oluşturdum, daha sonra "Hedef Olmayan Hücre Senaryonu oluşturdum ve bir birlerinden bağımsız olarak çalıştırduğımda düzgün olarak çalıştılar.
Ancak, "Worksheet_Change" olayı ile senaryoları birleştirerek çalıştırdığımda sonuç alamıyorum.
Örnek çalışmada detayları bulunan senaryoları aktif sayfada çalışacak şekilde nasıl bir prosedür yazılmalıdır?
Benim için değerli olan yardımlarınızı rica ediyorum.

Saygılarımla.
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
DataMaestro
Mesajlar: 2
Kayıt: 14 Tem 2023, 21:14
Lokasyon: Antalya
Meslek: Turizm Ve Otel İşletmeciliği Meslek Elemanı
Adınız: Ömer Ali
Soyadınız: ÜZÜMCÜ

Re: Worksheet_Change Yordamı İle Çoklu Koşullu Farklı Senaryoları Gerçekleştirme

Mesaj gönderen DataMaestro »

Sayın uzman ardakaşlar,

Konu güncel olup, sanırım konuyu biraz komplike haline getirmişim. Yapılmak istenen özetle aşağıdaki gibidir.
Yasal olarak çalışanlara 6 vardiya gününden sonra 7. güne haftalık izin verme zorululuğu bulunmaktadır.
Bu yasal zorunluluk haftalık çalışma programı yapılırken gözardı edildiğinden, haftalık çalışma programında veri girişlerini aşağıdaki gibi şifre kontrolü yaparak manioülasyonların önüne geçmek istiyorum.
Haftalık izin günleri "E9" sütunundaki hücrelere yazılarak belirlenmektdir.
Haftalık İzinler Kodları = "OFF, A-OFF, B-OFF, C-OFF, E-OFF" şeklide 5 adet farklı kod olarak belirlenmiştir.
Vardiya Kodları = "A, B, C, D, E, F, G, H, ...... ve bunun gibi içerisinde "OFF" kelimesi geçmeyen kodlar olarak belirlenmiştir.
Haftalık izin günleri "E" sütunundaki veri doğrulama ile haftanın günlerinden biri seçilerek yapılmaktadır. Yapılan seçime göre Haftalık İzin kodlarının yazılacağı alan SARI renk ile, Vardiya Kodlarının yazılacağı alanlar YEŞİL renk ile belirlenmiştir.

SARI renkli hücre işlemleri; Belirlenmiş SARI renkli hücrelere Haftalık İzin kodlarının yazılmasına doğrudan izin verilecektir. Eğer, SARI renkli hücrelere Vardiya Kodları yazılmak istenince şifre kontrolü yapılarak izin verilecektir.

YEŞİL renkli hücre işlemleri;SARI renkli hücre ile YEŞİL renkli hücre işlemleri birbirlerinin tersi(Zıttı) işlemleri gerçekleştirmektedir. Buna Göre; Belirlenmiş YEŞİL renkli hücrelere Vardiya Kodlarının yazılmasına doğrudan izin verilecektir. Eğer, YEŞİL renkli hücrelere Haftalık İzin Kodları yazılmak istenince şifre kontrolü yapılarak izin verilecektir.Örnek çalışmanın "Kasım_SHIFT" sayfasında bu işlemleri gerçekleştirmek istedim.Ayrıca örnek çalışmada SARI renkli hücreler = Hedef Hücre, YEŞİL renkli hücreler ise Hedef Olmayan Hücreler olarak ifade edildiğini belirtmek isterim.
islakates
Mesajlar: 28
Kayıt: 08 Tem 2023, 00:56
Meslek: Yazılım Uygulama ve Destek Elemanı
Adınız: Zulkarneyin
Soyadınız: Albayrak

Re: Worksheet_Change Yordamı İle Çoklu Koşullu Farklı Senaryoları Gerçekleştirme

Mesaj gönderen islakates »

Hangi sayfada çalşıyorsanız o sayfanın kod kısmına ekleyin, kodlarda oynama yapın

Private Sub Worksheet_Change(ByVal Target As Range)
Dim allowedChars As String, userInput As String, correctPassword As String, cell As Range

allowedChars = "ABCDEFGH"

If Not Intersect(Target, Range("A1:D20")) Is Nothing Then
correctPassword = InputBox("Geçerli bir değer girmek için şifreyi girin:", "Şifre", "")

If correctPassword = "123456" Then
Application.EnableEvents = False

For Each cell In Target
userInput = Trim(cell.Value)

If Len(userInput) > 0 And InStr(1, allowedChars, UCase(userInput)) = 0 Then
cell.Value = ""
MsgBox "Lütfen sadece A, B, C, D, E, F, G, H harflerini kullanın!", vbExclamation, "Uyarı"
End If
Next cell

Application.EnableEvents = True
Else
MsgBox "Yanlış şifre. Değişiklik yapılamadı.", vbExclamation
Application.Undo
End If
End If
End Sub
islakates
Mesajlar: 28
Kayıt: 08 Tem 2023, 00:56
Meslek: Yazılım Uygulama ve Destek Elemanı
Adınız: Zulkarneyin
Soyadınız: Albayrak

Re: Worksheet_Change Yordamı İle Çoklu Koşullu Farklı Senaryoları Gerçekleştirme

Mesaj gönderen islakates »

Daha kullanışlı hale getirdim,

Private Sub Worksheet_Change(ByVal Target As Range)
Dim allowedChars As String
Dim userInput As String
Dim correctPassword As String
Dim cell As Range

allowedChars = "ABCDEFGH"

If Not Intersect(Target, Range("A1:D20")) Is Nothing Then
correctPassword = InputBox("Geçerli bir değer girmek için şifreyi girin:", "Şifre", "")

If correctPassword = "123456" Then
Application.EnableEvents = False

For Each cell In Target
userInput = Trim(cell.Value)

If Len(userInput) > 0 And InStr(1, allowedChars, UCase(userInput)) = 0 Then
cell.Value = ""
MsgBox "Lütfen sadece A, B, C, D, E, F, G, H harflerini kullanın!", vbExclamation, "Uyarı"
Application.Undo
End If
Next cell

Application.EnableEvents = True
Else
MsgBox "Yanlış şifre. Değişiklik yapılamadı.", vbExclamation
Application.EnableEvents = False ' Olayları geçici olarak devre dışı bırak
Application.Undo
Application.EnableEvents = True ' Olayları tekrar etkinleştir
End If
End If
End Sub