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.
Worksheet_Change Yordamı İle Çoklu Koşullu Farklı Senaryoları Gerçekleştirme
-
- 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
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
-
- 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
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.
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.
-
- 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
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
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
-
- 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
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
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