• DİKKAT

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

Bir hücreye Değer girildiyse,diğerine de girmeyi mecbur kılmak

Katılım
1 Haziran 2011
Mesajlar
5
Excel Vers. ve Dili
Excel 2007-Türkçe
Herkese Merhabalar,

Kullandıgımız satış formunda bir hücreye bir değer girildiyse , aşağıdaki hücrede de bir değer girilmesinin mecburi olmasını sağlamaya çalışıyoruz.

Yani;

A1 hücresinde: Avans Ödemeli seçeneğini hücre içinde seçtiklerinde

A2 Hücresinde : Değer girilmediği durumda " KIRMIZIYA Boyamalı ve ERROR vermeli.

Nasıl bir IF Fonksiyonu yazmalıyız?

Yardımlarınız için şimdiden Çok teşekkürler,
 
KIRMIZIYA Boyamalı ve ERROR vermeli.

Kırmızıya boyama için koşullu biçimlendirme yapılabilir ancak

Hata uyarısı vermesi için makro kullanmanız gerek.

Örneği biraz daha açar mısınız başvuru hücresi sadece A1 mi?

. . .
 
Aşağıdaki kodları ilgili sayfanın kod bölümüne yapıştırırsanız, A2 hücresine "Avans Ödemeli" yazdığınızda/seçtiğinizde, A2 kırmızı olur, bir uyarı verir ve inputbox'a veri girmenizi ister, veriyi inputbox'a girdiğinizde A2 hücresine ekler ve a2nin kırmızılığı kaybolur.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
If Target = "Avans Ödemeli" Then
    [a2].Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    veri = InputBox(""Avans Ödemeli" seçtiğiniz için A2 hücresine değer girmelisiniz")
    If veri = "" Then GoTo 10
    If veri <> "" Then
    [a2] = veri
    End If
    
End If
    [a2].Select
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
10:

End Sub

Yalnız Avans Ödemeli büyük küçük harf duyarlı olduğundan aynen makroda yazıldığı gibi kullanılmazsa makro çalışmaz.
 
Kırmızıya boyama için koşullu biçimlendirme yapılabilir ancak

Hata uyarısı vermesi için makro kullanmanız gerek.

Örneği biraz daha açar mısınız başvuru hücresi sadece A1 mi?

. . .

Merhabalar,

Yardımlarınız için teşekkürler.

Sanırım bu durum makrosuz çözülemez gibi gözüküyor.

Makro için çok da deneyimli olmadığım için basit sorular yöneltiyor olabilirim kusura bakmayın.

Hazırlamam gereken formun dilinde aşağıda örneği oluşturdum.


A36-CELL --------------------------C36
Partial payment due (if applicable)-------if this is filled(herhangi bir tarih)
A-37 ---------------------------- C37
Partial payment %--------------this should be filled( bir yüzde oranı girilmesi.)


Eğer avans ödemesi var ise, C36'ya bir tarih girilmesi gerekmekte.Ama bu durumda C37 hücresini dolduran kişi boş bırakmamalı ve buraya da mutlaka bir yüzde oranı girmeli.

Girmedi takdirde hücre hata vermeli.(kırmızı boyanabilir-Error yazabilir vb...)

Yardımlarınız için çok teşekkürler,
 
Verdiğim kodları yeni bilgilere göre güncelledim. C36 hücresine herhangi bir tarih girildiğinde bir inputbox çıkar ve değer girmenizi ister. Bu arada C37 hücresi kırmızı olur. Eğer inputbox boş bırakılırsa C37 kırmızı kalır ve ERROR! yazar. inputboxa herhangi bir veri girilirse bunu C37'ye yazar ve 37'nin dolgusu iptal olur.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C36")) Is Nothing Then Exit Sub
If IsDate(Target) = True Then
    [C37].Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    veri = InputBox("Please Enter Partial Payment %" & Chr(10) & "Lütfen Avans Ödeme Yüzdesi Giriniz")
        If veri = "" Then
            [C37] = "ERROR!"
        Else
        If veri <> "" Then
            [C37] = veri
            [C37].Select
                With Selection.Interior
                    .Pattern = xlNone
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                End With
        End If
        End If
End If
End Sub
 
Peki bu kodu dolu olan a1 hücresi için eğer h1 veya k1 den herhandi biri boşsa nasıl uyarı verebilir.
Yani a1 e veri girildiği anda ise ve h1 veya k1 den biri boşsa uyarı verebilir mi ?
 
Peki bu kodu dolu olan a1 hücresi için eğer h1 veya k1 den herhandi biri boşsa nasıl uyarı verebilir.
Yani a1 e veri girildiği anda ise ve h1 veya k1 den biri boşsa uyarı verebilir mi ?

Aşağıdaki kodları dener misiniz?

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1")) Is Nothing Then GoTo 10
If Target <> "" Then
    If [H1] = "" Or [k1] = "" Then
            UYARI = MsgBox("A1 dolu olduğu için H1 veya K1 boş olamaz", vbCritical)
            [H1].Select
            [H1].Locked = False
            [k1].Locked = False
            ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    End If
End If
10:
If Intersect(Target, Range("H1")) Is Nothing Then GoTo 20
If Target <> "" And [k1] = "" Then
[k1].Select
End If
20:
If Intersect(Target, Range("K1")) Is Nothing Then Exit Sub
If Target <> "" Then
ActiveSheet.Unprotect
End If
If [A1] <> "" Then
If [H1] <> "" And [k1] <> "" Then
ActiveSheet.Unprotect
End If
End If
End Sub
 
Bunu a1:a500 aralığındaki datalar için gerçekleştirebilir miyiz? Yani sadece a1,h1 ve k1 için değil a 500 e kadar h ve k şartını çalıştırmalı
 
Verdiğim kodları yeni bilgilere göre güncelledim. C36 hücresine herhangi bir tarih girildiğinde bir inputbox çıkar ve değer girmenizi ister. Bu arada C37 hücresi kırmızı olur. Eğer inputbox boş bırakılırsa C37 kırmızı kalır ve ERROR! yazar. inputboxa herhangi bir veri girilirse bunu C37'ye yazar ve 37'nin dolgusu iptal olur.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C36")) Is Nothing Then Exit Sub
If IsDate(Target) = True Then
    [C37].Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    veri = InputBox("Please Enter Partial Payment %" & Chr(10) & "Lütfen Avans Ödeme Yüzdesi Giriniz")
        If veri = "" Then
            [C37] = "ERROR!"
        Else
        If veri <> "" Then
            [C37] = veri
            [C37].Select
                With Selection.Interior
                    .Pattern = xlNone
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                End With
        End If
        End If
End If
End Sub

Yusuf Bey ;

Öncelikle çok teşekkür ederim.

Makro konusunda bilgili değilim.Bu sebeple en giriş seviyesinde bir sorun yaşıyorum.

Yazdığınız kodu developer sekmesinden-Visual Basic'i açarak eklemeye çalıştım.

Bunun için çalışma sayfasında "insert modelu" yaptım.Sonra kodu buraya kopyalayıp kaydettim. Macro enabled file olarak yeniden kaydettim ve açtım.

Makroyu çalıştırmak için" insert button" yaptım ve çalıştırmak için bunu tıkladım. Ama macrolar disabled veya mevcut değildir hatası aldım.

Ama makroyu çalıştırmayı başaramadım.

Nerede yanlış yapıyorum? Nasıl ilerlemeliyim?

Yardımlarınız için çok teşekkürler.
 
Merhaba Tenigma bey,

Modül olarak değil. Modül eklemeden hangi sayfaya uygulamak istiyorsanız visual basic de o sayfa içine girip oraya yapıştırmanız yeterli olacaktır.
 
Sayın honestman'ın dediği gibi verdiğim kodlar sayfa olaylarına bağlı olduğu için hangi sayfadaysa o sayfa sekmesine sağ tıklayarak Kod görüntüle deyin ve çıkan boş sayfaya bu kodları yapıştırın.
 
Geri
Üst