• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

dolgu rengi kırmızı olunca dosyayı kaydetme

Katılım
11 Şubat 2021
Mesajlar
106
Excel Vers. ve Dili
2019, rus
Merhaba. Bana excel dosyasında hücrede kırmızı renk dolgu olduğu zaman dosyayı kaydetmek istediğimde ekrana bir userform çıkıp, userformda " fiyat yanlış, aksi takdirde kaydetmek mümkün değil " yazısı çıksın ve dosyayı kaydetmeyi engellesin - bu lazım. Bunu nasıl yapabilirim?
 
Hangi hücrede?
Renkler elle mi uygulandı? Yoksa koşullu biçimlendirme ile mi uygulandı?
 
Kontrolün kolay olması açısından hücre adresi sormuştum.

Excel sayfasının bütün hücrelerini işlem almak çok mantıklı değildir.

Rengi uyguladığınız sütun bellidir sanırım.
 
Kontrolün kolay olması açısından hücre adresi sormuştum.

Excel sayfasının bütün hücrelerini işlem almak çok mantıklı değildir.

Rengi uyguladığınız sütun bellidir sanırım.
E sütunu ve bu arada yanlış belirtmişim - hücreler koşullu biçimlendirme ile renklendirildi.
 
Dosyanızın ThisWorkbook bölümüne aşağıdaki kodu uygulayıp deneyiniz.

Sayfa adını ve hücre aralığını kendinize göre düzenlersiniz.

C++:
Option Explicit
Dim Kontrol As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call ThisWorkbook.Workbook_BeforeSave(True, False)
    Cancel = Kontrol
End Sub

Public Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim Sayfa As Worksheet, Veri As Range
    
    Kontrol = False
    
    For Each Sayfa In ThisWorkbook.Worksheets
        For Each Veri In Sayfa.Range("E1:E1000")
            If Veri.DisplayFormat.Interior.ColorIndex = 3 Then
                MsgBox "Fiyat yanlış, bu nedenle kaydetmek mümkün değil!", vbCritical
                Cancel = True
                Kontrol = True
                Exit Sub
            End If
        Next
    Next
End Sub
 
Sorunun çözümüyle ilgili değil ama sanki "Fiyat yanlış, aksi taktirde kaydetmek mümkün değil!" ifadesi Türkçemize uygun değil gibi.

"Fiyat yanlış, bu nedenle kaydetmek mümkün değil!" olsa daha iyi olmaz mı?
 
Dosyanızın ThisWorkbook bölümüne aşağıdaki kodu uygulayıp deneyiniz.

Sayfa adını ve hücre aralığını kendinize göre düzenlersiniz.

C++:
Option Explicit
Dim Kontrol As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call ThisWorkbook.Workbook_BeforeSave(True, False)
    Cancel = Kontrol
End Sub

Public Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim Veri As Range
   
    Kontrol = False
   
    For Each Veri In Sheets("Sheet1").Range("E1:E1000")
        If Veri.DisplayFormat.Interior.ColorIndex = 3 Then
            MsgBox "Fiyat yanlış, aksi taktirde kaydetmek mümkün değil!", vbCritical
            Cancel = True
            Kontrol = True
            Exit Sub
        End If
    Next
End Sub
Cevabınız için teşekkür ederim, çok işime yaradı.
 
Dosyanızın ThisWorkbook bölümüne aşağıdaki kodu uygulayıp deneyiniz.

Sayfa adını ve hücre aralığını kendinize göre düzenlersiniz.

C++:
Option Explicit
Dim Kontrol As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call ThisWorkbook.Workbook_BeforeSave(True, False)
    Cancel = Kontrol
End Sub

Public Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim Veri As Range
  
    Kontrol = False
  
    For Each Veri In Sheets("Sheet1").Range("E1:E1000")
        If Veri.DisplayFormat.Interior.ColorIndex = 3 Then
            MsgBox "Fiyat yanlış, aksi taktirde kaydetmek mümkün değil!", vbCritical
            Cancel = True
            Kontrol = True
            Exit Sub
        End If
    Next
End Sub
Hocam bu kısmı bütün excel kitabın sayfalarına nasıl uygulaya biliriz? Yanı bütün sayfalarda aynı anda çalışsın.
 
Sayfa döngüsünü de ekledim.

Ek olarak Yusuf beyin önerisine göre mesajı revize ettim.

Üstte ki mesajımdan kodun son halini tekrar deneyiniz.
 
Geri
Üst