fonksiyon ile dizi elemanları değer olarak döndürülebilir mi?

Katılım
18 Ocak 2008
Mesajlar
23
Excel Vers. ve Dili
excel2003
Merhaba Arkadaşlar üzerinde çalıştığım projede bir yere geldim ve içinden çıkamadım...Çıkamadığım nokta; bir fonksiyon içinde tanımlı bir dizi, fonksiyon çağrıldığı zaman dizi elemanlarını çağrıldığı yere döndürebilir mi? eğer bu işlemi yapabilirsem projeyi tamamlayabileceğim..Fakat nasıl yapılacağı konusunda herhangi bir fikrim yok..DAha doğrusu her zamanki yaptığım gibi bir fonksiyon oluşturdum, ve fonksiyonu çağırıp parametre gönderdim ve bekledimki fonksiyon içinde tanımlı dizi elemanları çağırdığım yere döndürülsün..Hayır bu olmadı onun yerine hata aldım..Sorunun daha netleşmesi açısından örnek yazılımı burada paylaşarak açıklamamı desteklersek;
Tanımladığım fonksiyonlardan ilk şu;

Public Function sayim(ByVal M As Integer, ByVal N As Integer) As Integer
Do
M = Fix(M / N)
say = say + 1
Loop Until M < N
sayim = say
End Function


İkinci Fonksiyon ise şu;

Public Function sonuc_al(ByVal X As Integer, ByVal Y As Integer) As Integer
Dim dizi() As Variant
ReDim dizi(alim)
For i = 0 To alim - 1
sonuc = Fix(X / Y)
If sonuc >= Y Or (0 < sonuc < Y) Then dizi(i) = sonuc
MsgBox (dizi(i))
X = Fix(X / Y)
Next i
sonuc_al = dizi(i)
End Function


Ana yazılım ise (Bu arada yapmaya çalıştığım prejede decimal sayıyı istenilen bir tabandaki sayıya çevirme işlemi) şu;

Private Sub Command1_Click()
Dim dizi(), mod_dizi() As Variant
Dim sonuc, ekle, i, veri, veri2 As Double
Dim taban As Integer
Dim birles As String
veri = InputBox("Veri girişi yapınız")
taban = InputBox("Taban girişi yapınız")
alim = sayim(veri, taban)
MsgBox "verinin toplam bölünme sayısı: " & alim ' bu örnek TemelKorkmaz'ın 2. cilt 294. syf.faydalanılarak geliştirildi
ReDim dizi(alim)
ReDim mod_dizi(alim)
Call sonuc_al(veri, taban) Burada çağrım yapıyorum ama hata alıyorum
For k = 0 To alim - 1
mod_al = dizi(k) Mod taban
mod_dizi(k) = mod_al
Print mod_dizi(k)
Next k
'MsgBox "Şuan veri değişkeninin tuttuğu deger: " & veri
'MsgBox "Şuan taban değişkeninin tututuğu deger: " & taban
ilk_deger$ = Str(veri Mod taban)
MsgBox (ilk_deger)
For i = 0 To alim - 1
birles$ = birles$ & Str(mod_dizi(i))
Next i
Print birles


Yazılımın içinde yer alan msgbox ve print deyimleri projeyi yer yer kontrol etmek amaçlı yerleştirilmiş olup; prejenin nihai yapısında kaldırılarak düzenli bir form oluşturulacaktır..Evet gerçekleştirilmek istenen preje bu Lakin gelip de tıkandığımız yer ise;
Bİr fonksiyonun döndürdüğü değer diğer fonksiyon içinde kullanılabiliyormu? Örneğimizde sayim fonksiyonunun döndürdüğü ve alim değişkeninde depolanan bilgi sonuc_al fonksiyonunda kullanılabilir mi?
İkinci kısım ise sorunun başlığını oluşturan fonksiyon içinde tanımlı dizi elemanları ana yazılım içinde çağrıldığı zaman verileri döndürebiliyor mu?
 
Üst