• DİKKAT

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

Şarta bağlı olarak hücreye (-) yazdırma

  • Konbuyu başlatan Konbuyu başlatan necip54
  • Başlangıç tarihi Başlangıç tarihi
Katılım
4 Eylül 2004
Mesajlar
183
Excel Vers. ve Dili
Excel 2010 Türkçe
Merhabalar,

F1 hücresine "İPTAL" yazıldığında R1 hücresine elle girilecek sayının önüne (-) işareti koymadan kendiliğinden (-) negatif olacak şekilde biçimlendirme yapılabilir mi acaba?
Yani R1 hücresine hiç -/+ işareti koymadan değer girdiğimizde kendiliğinden (-) değer alabilir mi?

Saygılarımla,
 
Merhaba,

İlgili sayfanızın kod bölümüne aşağıdaki kodu uygulayıp deneyiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Son
    Application.EnableEvents = False
    Select Case Target.Address(0, 0)
        Case "F1", "R1"
        If Range("F1") = "İPTAL" Then
            Range("R1") = Abs(Range("R1")) * -1
        Else
            Range("R1") = Abs(Range("R1"))
        End If
    End Select
Son: Application.EnableEvents = True
End Sub
 
Merhaba,

İlgili sayfanızın kod bölümüne aşağıdaki kodu uygulayıp deneyiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Son
    Application.EnableEvents = False
    Select Case Target.Address(0, 0)
        Case "F1", "R1"
        If Range("F1") = "İPTAL" Then
            Range("R1") = Abs(Range("R1")) * -1
        Else
            Range("R1") = Abs(Range("R1"))
        End If
    End Select
Son: Application.EnableEvents = True
End Sub

Cevabınıza teşekkür ederim Sayın Korhan bey, kodlar çalışıyor.Örnek hücre olarak 1 satırlık işlem için sormuştum ama bunu şöyle genişletmek mümkün olur mu acaba?

f3:f10000 hücrelerinden hangilerinde "İPTAL" yazdığımızda, aynı satırlarda R3:R10000 ve S3:S10000 deki yazılan değerler (-) olsun
 
Son düzenleme:
Aşağıdaki kodu deneyiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("F3:F10000", "R3:S10000")) Is Nothing Then Exit Sub
    On Error GoTo Son
    Application.EnableEvents = False
    
    If Cells(Target.Row, "F") = "İPTAL" Then
        Cells(Target.Row, "R") = Abs(Cells(Target.Row, "R")) * -1
        Cells(Target.Row, "S") = Abs(Cells(Target.Row, "S")) * -1
    Else
        Cells(Target.Row, "R") = Abs(Cells(Target.Row, "R"))
        Cells(Target.Row, "S") = Abs(Cells(Target.Row, "S"))
    End If

Son: Application.EnableEvents = True
End Sub
 
Çok teşekürler Korhan bey, işlem tamam.
 
Aşağıdaki kodu deneyiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("F3:F10000", "R3:S10000")) Is Nothing Then Exit Sub
    On Error GoTo Son
    Application.EnableEvents = False
    
    If Cells(Target.Row, "F") = "İPTAL" Then
        Cells(Target.Row, "R") = Abs(Cells(Target.Row, "R")) * -1
        Cells(Target.Row, "S") = Abs(Cells(Target.Row, "S")) * -1
    Else
        Cells(Target.Row, "R") = Abs(Cells(Target.Row, "R"))
        Cells(Target.Row, "S") = Abs(Cells(Target.Row, "S"))
    End If

Son: Application.EnableEvents = True
End Sub

Sayın Korhan, uygulamada bir problem oluştu.

F sütununda herhangi bir hücreye "İPTAL" yazdığımızda R ve S sütunlarında elle girilen değerler kendiliğinden (-) değerini alıyor, buraya kadar güzel,
ancak F de "İPTAL" yazılmayan bazı hücrelerin satırındaki R ve S hücrelerine bu sefer elle (-) işareti koyarak değer giremiyoruz, yani R ve S sütunları elle de (-) sayı girilmesine açık olacak şekilde uyarlanabilir mi?
Şu durumda, R ve S sütunları el ile (-) değeri girilmesine kapalı, yani (-) değer de girseniz kendiliğinden (+) değere dönüşüyor.

Saygılarımla,
 
Aşağıdaki kodu deneyiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("F3:F10000", "R3:S10000")) Is Nothing Then Exit Sub
    On Error GoTo Son
    Application.EnableEvents = False
    
    If Cells(Target.Row, "F") = "İPTAL" Then
        Cells(Target.Row, "R") = IIf(Cells(Target.Row, "R") > 0, Cells(Target.Row, "R") * -1, Cells(Target.Row, "R"))
        Cells(Target.Row, "S") = IIf(Cells(Target.Row, "S") > 0, Cells(Target.Row, "S") * -1, Cells(Target.Row, "S"))
    End If

Son: Application.EnableEvents = True
End Sub
 
Çok teşekkürler Sayın Korhan bey,
 
Geri
Üst