• DİKKAT

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

tarih vba

1903emre34@gmail.com

Altın Üye
Katılım
29 Mayıs 2016
Mesajlar
947
Excel Vers. ve Dili
Microsoft Excel 2013 Türkçe
arkadaşlar merhaba

ekte gönderdiğim dosyada başlangıç ve bitiş tarihleri arasındaki hesaplayıp 1 yıldan kısa süreli ise ekranda uyarı mesaj verip 770,180,280 hesapların kullanılması gerekmektedir. yazısı yazacak vba koduna ihtiyacım var yardımlarınız rica eder teşekkürler
 
Son düzenleme:
Aşağıdaki kod umarım işinize yarar.
Kod:
Sub kontrol_et()
Dim fark As Long
With Sayfa1
    fark = .Range("B4").Value - .Range("B3").Value
End With

If fark < 365 Then
    MsgBox "Süre 1 yıldan kısadır." & vbCrLf & _
        "770,180,280 hesapların kullanılması gerekmektedir. "
Else
    MsgBox "Fark 1 yıl, yada daha fazladır."
End If

End Sub
 
teşekkürler

kontrol et seçeneği bastığım zaman kod çalışmıyor ekranı geliyor
 
Son düzenleme:
Dosyanız ektedir.

NOT: Aşağıdaki hatırlatmayı yapmak için düzeltme yapma gereği gördüm.
İçinde makro kullandığınız Excel dosyalarını; 97-2003 uyumluluk modunda (.xls), yada makro içeren çalışma kitabı (xlsm) modunda kaydediniz.
.xlsx tipindeki Excel dosyalarını; makro işlemleri yapmak için değil, veritabanı olarak kullanmak faydalı olacaktır.
 

Ekli dosyalar

Son düzenleme:
Makro içeren Excel dosyaları için bir önceki mesajımda düştüğüm notu herzaman dikkate alınız.
Bir buton yada nesneye makro atamak için aşağıdaki yöntemi izleyiniz.
1) sayfa sekmesine sağ tıklayıp kod görüntüle ye tıklayarak VBA Editör penceresini açıyoruz.
2) Açılan VBA Editor pencerisi (kod sayfası) nin sol üst tarafında "Modül ekle" butonuna basmak yada ekle >> modül yaparak yeni bir modül oluşmasını sağlıyoruz. modül seçili iken kod penceresine istediğimiz kodu yazıyoruz veya hazır bulmuşsak yapıştırıyoruz.
3) Sayfaya giderek oluşturduğumuz nesneye sağ tıklayarak "Makro ata" seçeneğine tıklıyoruz, görüntülenen sihirbazda kodumuzun adını bulup tamam diyoruz.
(Sanırım bu açıklamalardan sonra artık rahatça bazı çalışmalar yaparsınız.)
 
Aşağıdaki kod umarım işinize yarar.
Kod:
Sub kontrol_et()
Dim fark As Long
With Sayfa1
    fark = .Range("B4").Value - .Range("B3").Value
End With

If fark < 365 Then
    MsgBox "Süre 1 yıldan kısadır." & vbCrLf & _
        "770,180,280 hesapların kullanılması gerekmektedir. "
Else
    MsgBox "Fark 1 yıl, yada daha fazladır."
End If

End Sub

Şubat 29 çekerse o zaman yıl 366 gün olacak.O zaman ne olacak?
 
Merhaba.

Umarım yanlış anlamadım.

Uygulama istediğiniz sayfa adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçtiğinizde açılan
VBA ekranının sağ tarafındaki boş alana aşağıdaki kod bloklarını yapıştırın ve
tarihleri değiştirerek sonucu gözlemleyin.
.
Kod:
[FONT="Arial Narrow"][B]Private Sub Worksheet_Change(ByVal Target As Range)[/B]
If Intersect(Target, [B3:B4]) Is Nothing Then Exit Sub
If Target = "" Then Exit Sub
    [COLOR="Blue"]Call Yıl_Farkı[/COLOR]
[B]End Sub[/B]

[COLOR="blue"][B]Sub Yıl_Farkı()[/B][/COLOR]
    If DateDiff("yyyy", [B3], [B4]) + ((DateDiff("m", [B3], [B4]) + _
        (Day([B3]) > Day([B4])) - DateDiff("yyyy", [B3], [B4]) * 12) < 0) = 0 Then _
    MsgBox "770,180,280 hesaplar kullanılmalıdır.", vbCritical, "EMRE_34"
[COLOR="blue"][B]End Sub[/B][/COLOR][/FONT]
 
Son düzenleme:
Şubat 29 çekerse o zaman yıl 366 gün olacak.O zaman ne olacak?

Evren Üstadım haklısınız.
Kodu şöyle düzeltiyorum:
Kod:
Sub kontrol_et()
Dim ilktarih As Date, sontarih As Date, fark As Long
With Sayfa1
 ilktarih = CDate(.Range("B3").Value)
 sontarih = CDate(.Range("B4").Value)
If Month(ilktarih) > Month(sontarih) Then
    fark = (DateDiff("yyyy", ilktarih, sontarih)) - 1
ElseIf Month(ilktarih) < Month(sontarih) Then
    fark = DateDiff("yyyy", ilktarih, sontarih)
ElseIf Month(ilktarih) = Month(sontarih) Then
    If Day(ilktarih) > Day(sontarih) Then
        fark = (DateDiff("yyyy", ilktarih, sontarih)) - 1
    Else
        fark = DateDiff("yyyy", ilktarih, sontarih)
    End If
End If
End With
If fark < 1 Then
    MsgBox "Süre 1 yıldan kısadır." & vbCrLf & _
        "770,180,280 hesapların kullanılması gerekmektedir. "
Else
    MsgBox "Fark 1 yıl, yada daha fazladır."
End If
End Sub
 
Son düzenleme:
ömer hoca teşekkürler şubat 29 çekmesini atlamışım vba konularında pek iyi değilim orion anlattım pek yapamadım kontrol et seçeneğini sizin makro kodu nasıl çalıştırabiliriz ?
 
Son düzenleme:
Merhaba.

Forumun iki ustası Sayın antonio ve Sayın Orion1'in kodları konusunda bir şey söyleyemem (denemiş değilim).

Gönderdiğim kod'un (önceki gönderdiğim kod tarihler değiştiğinde otomatik olarak çalışmaktaydı ama siz düğme kullanmayı tercih etmişsiniz)
Sub Yıl_Farkı diye başlayıp End Sub diye biten kısmını,
kontrol_et kod'larının altına yapıştırdıktan sonra, sayfaya bir düğme daha ekleyin ve
bu dğmeye sağ tıklayıp MAKRO ATAyı seçin, açılan ekranda Yıl_Farkı'nı seçip işlemi onaylayın.

(Üstteki tarihin alttakinden küçük olup olmadğına ilişin bir kontrol eklemedim, üsttekine küçük tarih yazacağınızı varsaydım)

Her iki düğmenin uyguladığı kodların sonucuna göre tercih ettiğinizi kullanırsınız.
.
 
Son düzenleme:
Geri
Üst