• DİKKAT

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

Excel VBA'da Stok seviyesine ulaşıldığında Kayıt Hatası verdirmek Nasıl Yapılır?

Katılım
21 Ocak 2008
Mesajlar
24
Excel Vers. ve Dili
Excel 2007 TR
Merhabalar, benim şöye bir sorunum var. ufak çaplı bir program hazırlamaya çalışacağım.

VBA da kayıt butonu ile verileri kaydedeceğim ancak, istenilen stok değerlerine ulaştığım zaman kayıt butonuna tıklayınca stok seviyesini dolduğunu ve bu kayıdın yapılamayacağının bilgisinin verilmesini istiyorum. böyle bir şey mümkün mü? mümkün ise nasıl yaparım saygılar iyi geceler...
 
Merhaba.
Örnek belgeniz yok ama aşağıdaki mantık ile kod düzenlemesi yaparak istediğiniz sonuca ulaşılabilir.
Varsayımlar:
-- Stok'a ekleyeceğiniz miktarın A1 hücresine yazıldığı,
-- Miktarların STOK adlı sayfanın D sütununa kaydedildiği,
-- Stok sınır değeri 100
Mantık şu şekilde A1 hücresine yazılan değer ile STOK sayfası D sütununun toplamı 100'ü geçiyorsa
mesaj kutusu görüntülenir ve kayıt gerçekleşmeden işlem sonlandırılır,
geçmiyorsa bu uyarı görüntülenmez ve KAYIT KODLARINIZla devam edilir.
Kod:
[FONT="Trebuchet MS"][SIZE="2"][B]Sub STOK_KAYIT_BRN()[/B]
If WorksheetFunction.Sum([B][COLOR="Blue"]Sheets("STOK").Range("D:D"))[/COLOR][/B] + Sheets("STOK").Range("[B][COLOR="red"]A1[/COLOR][/B]") > [B][COLOR="orange"]100[/COLOR][/B] Then
    MsgBox "Son eklenen ile birlikte stok sınırına ulaşılıyor, stok girişi yapamazsınız."
    Exit Sub
End If
[COLOR="Red"]..... KAYIT KODLARINIZ .....[/COLOR]
[B]End Sub[/B][/SIZE][/FONT]
 
cevabınız için teşekkür ederim. anladığım kadarıyla tek bir stok değeri için geçerli bu formül ancak değişik kalemlerdeki ürünle için farklı stok değerleri mevcut. bu şekilde olunca ne yapabiliriz?
 
Merhaba.
Önceki cevabıma "örnek belge yok ama" diye başlamıştım.
Afaki soruya verilecek cevap da afaki olmak durumunda.

Yeni sorunuzun cevabı ise Sum (TOPLA) işlevi yerine Sumif (ETOPLA) işlevi gibi
şartlı toplama yapacak bir işlevin kullanılması gerektiği.

Örnek belge ekleyerek soru sorarsanız, daha kesin ve net cevap alacağınızı düşünüyorum.
 
Üstadım çok teşekürler dosya ekte gönderdim
 

Ekli dosyalar

Sayın aeibrahim örneği bir dosya yükleme sitesine eklerseniz yardımcı olmaya çalışırım.
 
Dosyanız ektedir.:cool:
Kod:
Private Sub CommandButton1_Click()
Dim k As Range, sonsatir As Long, sh As Worksheet, doluluk As Long
Dim urun As Long
Application.ScreenUpdating = False
Sheets("Stok").Select
Set sh = Sheets("Tanımlar")
Set k = sh.Range("B2:B" & Rows.Count).Find(ALAN03.Value, , xlValues, xlWhole)
If Not k Is Nothing Then
    doluluk = k.Offset(0, 1).Value
    Else
    MsgBox "[ " & ALAN03.Value & " ]" & vbLf & "Tanımlar sayfasında ürün bulunamadı!Kayıt iptal oldu!", vbCritical, "UYARI"
    ALAN02.SetFocus
    Exit Sub
End If
urun = WorksheetFunction.SumIf(Range("B2:B" & Rows.Count), _
        ALAN03.Value, Range("D2:D" & Rows.Count)) + ALAN04.Value
If urun > doluluk Then
    MsgBox "Girilecek değer doluluktan fazla!" & vbLf & "İşlem iptal oldu!", vbCritical, "UYARI"
    ALAN02.SetFocus
    Exit Sub
End If
sonsatir = WorksheetFunction.CountA(Range("A:A")) + 1
Cells(sonsatir, "A").Value = CDbl(ALAN01.Value)
Cells(sonsatir, "B").Value = ALAN03.Value
Cells(sonsatir, "C").Value = ALAN02.Value
Cells(sonsatir, "D").Value = CDbl(ALAN04.Value)
Cells(sonsatir, "E").Value = CDate(ALAN05.Value)
ALAN01.Value = sonsatir
ALAN02.Value = ""
ALAN03.Value = ""
ALAN04.Value = ""
ALAN02.SetFocus
Application.ScreenUpdating = True
MsgBox "Kayıt başarı ile girildi.", vbOKOnly + vbInformation, "evrengizlen@hotmail.com"
End Sub
 

Ekli dosyalar

Teşekkürler hemen inceliyorum :D
 
Geri
Üst