• DİKKAT

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

Obeb-okek ile ilgili bir soru

Katılım
25 Ocak 2009
Mesajlar
110
Excel Vers. ve Dili
Excel-2007 Türkçe
Merhaba arkadaşlar;

Kullanıcıdan delta_y değerini Textbox a girmesini istiyorum ama yanına da Kontrol adlı bir command button da koyuyorum.

Kullanıcı önce delta_y değerini Textbox a girecek ama girdiği değerin uygunluğunu kontrol etmek için command button a tıkladığında

a ve b adlı sabit değerlerim mevcut.

girilen delta_y değeri hem a değişkenini hem de b değişkenini tam bölebilmesi gerekiyor.

a / delta_y = Tamsayı b / delta_y = Tamsayı

Bölemiyorsa hem a yı hem de b yi tam bölebilen ; kullanıcının girdiği değerden daha küçük bir delta_y bulunması nasıl oluşturulabilir?

Hocalarım obeb okek konusu gibi geliyor ama çözemedim bir türlü yardımcı olabilir misiniz ?

Teşekkürler

İyi çalışmalar

Saygılarımla
 
Hocalarım olumlu olumsuz fikirlerinizi bekliyorum , tıkandım çözüm bulamadım bir türlü

Teşekkürler

İyi çalışmalar
 
Evren hocam siz online sanız bir fikir verebilir misiniz acaba?
 
Merhaba,

İlk önce projenizde yeni bir modül oluşturup aşağıdaki kodları kopyalayın.
Kod:
Function OrtakBolenler(Sayi1, Sayi2)
    Dim Sonuc(), Carpan1, Carpan2, n
    
    Sayi1 = Int(Sayi1)
    Sayi2 = Int(Sayi2)
    
    Carpan1 = CarpanlaraAyir(Sayi1)
    Carpan2 = CarpanlaraAyir(Sayi2)
    
    For i = 1 To UBound(Carpan1)
        For j = 1 To UBound(Carpan2)
            If Carpan1(i) = Carpan2(j) Then
                n = n + 1
                ReDim Preserve Sonuc(n)
                Sonuc(n) = Carpan1(i)
            End If
        Next
    Next
    
    OrtakBolenler = Sonuc
End Function

Function CarpanlaraAyir(Sayi)
    Dim Sonuc(), n
    
    Sayi = Int(Sayi)
    
    For i = 1 To Sayi
        If Sayi Mod i = 0 Then
            n = n + 1
            ReDim Preserve Sonuc(n)
            Sonuc(n) = i
        End If
    Next
    
    CarpanlaraAyir = Sonuc
End Function

Function OBEB(Sayi1, Sayi2)
    Dim Ortak
    
    Ortak = OrtakBolenler(Sayi1, Sayi2)
    
    OBEB = Ortak(UBound(Ortak))
End Function
OBEB fonksiyonunu kullanmayacağız ancak işinize yarayabilir.

Daha sonra CommanButton kodlarını aşağıdaki şekilde düzenleyin.
Kod:
Private Sub CommandButton1_Click()
    Dim Ortak, yeni_delta_y
    
    Ortak = OrtakBolenler(a, b)
    
    For i = 1 To UBound(Ortak)
        If Ortak(i) <= delta_y Then
            yeni_delta_y = Ortak(i)
        End If
    Next
    
    '..... sizin kodlarınız......
End Sub
yeni_delta_y değişkeni, sizin delta_y ortak bölense aynı değilse daha küçük bir ortak bölen olacaktır. Aslında daha kısa çözümleri var ancak bu kodlar daha sonra işinize yarayabilir düşüncesiyle bu şekilde yazdım.

Kolay gelsin
 
Son düzenleme:
Sayın explorer çok teşekkürler çok değerli bir çalışma olmuş

Daha kodu uygulatmadım sadece inceledim ve istediğimi sağlayacak gibi gözüküyor.

Yalnız Ortakbölenler(a,b) fonksiyonundaki a ve b değerleri ben de a=0,40 ; b=0,020

Tamsayıya çevirme işlemi gerçekleşiyor ama bu değerler için nasıl bir düzeltme gerekir acaba?

Teşekkürler tekrar elinize emeğinize sağlık
 
Merhaba,

Değerleri sabit bir sayıyla (mesela 1000 olabilir) çarptırabilirsiniz. O zaman ondalıklardan kurtulursunuz.

Kolay gelsin.
 
Geri
Üst