Döngüsel olarak başvurduğu hücreye yazma

serkan guvenc

Altın Üye
Katılım
21 Kasım 2013
Mesajlar
47
Excel Vers. ve Dili
2007
Ekteki dosyada e sütünundaki sayının %60' alıp kalanı başvurduğu hücreye yazdırmak istiyorum.
sadece başvurduğu hücreye yazsın istiyorum.Buna uygun formül varmıdır?Teşekkürler
 

Ekli dosyalar

Merhaba, dosyanızın içi boş
 
Dosyanız boş.
 
Makro örneği.
Sayfa1 in kod sayfasına ekleyip E sütununa değer yazınız.
Kod:
Public kontrol As Byte
Private Sub Worksheet_Change(ByVal Target As Range)
If kontrol = 1 Then Exit Sub
    If Selection.Count > 1 Then Exit Sub
    kontrol = 0
    If IsNumeric(Target) Then
        If Target.Column = 5 Then
            kontrol = 1
            With Target
                .Value = .Value * 0.6
            End With
            GoTo son
        End If
    Else
        MsgBox "Sayısal bir değer yazmadınız.", , ""
    End If
son:
kontrol = 0
End Sub
 
sayfa 1 sütünunda d sutünuna aynı formülü çoğaltıp % 40ını hesaplatabilirmiyiz
 
D sütunu için son: satırının üzerine ekleyiniz.
Kod:
If kontrol = 1 Then Exit Sub
    If Selection.Count > 1 Then Exit Sub
    kontrol = 0
    If IsNumeric(Target) Then
        If Target.Column = 4 Then
            kontrol = 1
            With Target
                .Value = .Value * 0.4
            End With
            GoTo son
        End If
    Else
        MsgBox "Sayısal bir değer yazmadınız.", , ""
    End If
 
Makro örneği.
Sayfa1 in kod sayfasına ekleyip E sütununa değer yazınız.
Kod:
Public kontrol As Byte
Private Sub Worksheet_Change(ByVal Target As Range)
If kontrol = 1 Then Exit Sub
    If Selection.Count > 1 Then Exit Sub
    kontrol = 0
    If IsNumeric(Target) Then
        If Target.Column = 5 Then
            kontrol = 1
            With Target
                .Value = .Value * 0.6
            End With
            GoTo son
        End If
    Else
        MsgBox "Sayısal bir değer yazmadınız.", , ""
    End If
son:
kontrol = 0
End Sub
Adem hocam "kontrol" değişkenini sayfa olaylarını devre dışı bırakmak için kullanmışsınız galiba. Çok iyi bir çözüm, tebrik ederim. ApplicationEnableEvents=False yapıp hata anında sıkıntı yaşanması önlenmiş oluyor.
 
Application.EnableEvents kullanmak aklıma gelmemişti @YUSUF44 Hocam teşekkür ederim bilgilendirme için. Kontrol satırları iptal edilmiştir. :)
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
    If Selection.Count > 1 Then Exit Sub
    If IsNumeric(Target) Then
        If Target.Column = 5 Then
            With Target
                .Value = .Value * 0.6
            End With
        End If
    Else
        MsgBox "Sayısal bir değer yazmadınız.", , ""
        GoTo son:
    End If

    If IsNumeric(Target) Then
        If Target.Column = 4 Then
            With Target
                .Value = .Value * 0.4
            End With
        End If
    Else
        MsgBox "Sayısal bir değer yazmadınız.", , ""
    End If
son:
Application.EnableEvents = True
End Sub
 
Bence o hali daha iyiydi. Hata anında olayların pasif kalması riski yok en azından.
 
Her iki durumda denemeler yaptım, sıkıntı çıkmadı, konu sahibi hangisini kullanmak isterse artık Hocam. :)
 
Geri
Üst