• DİKKAT

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

Dizi hakkında

Katılım
8 Haziran 2007
Mesajlar
401
Excel Vers. ve Dili
excel fonksiyonlar
Forumda emeği geçen herkese merhaba. Aşağıdaki diziyi bir kalıp haline getirip
diğer butonlarda yada diğer kontrollerde sürekli kod tekrarına gerek kalmadan kullanmak istiyorum. Modüle yazarak olmadı. Daha doğrusu bu şekliyle kullanamadım. Yardımcı olan arkadaşlara şimdiden teşekkürler. :)

Kod:
Sub veri_tabanı()

Dim veri_tabanı()

Set syf1 = Sheets("veri")

With syf1

 veri_tabanı = .Range("A1:BB" & .Cells(syf1.Rows.Count, 3).End(3).Row)

End With

End Sub
 
Dim ile başlayan tanımlama satırını kod editöründe en üst bölüme (deklarasyon) yazmalısınız. Böylece dosya içinde tüm modüllerde kullanabilirsiniz.
 
Hocam dediğiniz gibi yaptım. Buton1 in click olayına MsgBox (UBound(veri_tabanı, 2))yazıp çalıştırdığımda run-time error 9 hatası alıyorum.
 
Aşağıdaki gibi deneyin.

TEST1 isimli makro bir kez çalıştığında TEST2 içinde tekrar çağırmaya gerek yok. Ben örnek olması için bu şekilde yaptım.


Kod:
Dim Veri_Tabani()

Sub TEST1()
    Veri_Tabani = Range("A1:Z1000").Value
End Sub

Sub TEST2()
    Call TEST1
    MsgBox UBound(Veri_Tabani, 2)
End Sub
 
Korhan hocam emeğiniz ve ilginiz için çok teşekkür ederim. Yazdığınız gibi denedim sıkıntı yok.Yalnız anlamadığım husus şu : Aşağıdaki kodları bir butonda deneyince aynı hatayı alıyorum. Bunu aşmak için ne yapmam lazım. :)

Kod:
Call TEST1
MsgBox UBound(Veri_Tabani, 2)
 
Ben denediğimde hata almıyorum...
 
Hocam kod aşağıdaki gibi. MsgBox (UBound(veri_tabanı, 2)) kısmını Sub prosedürüne yazıp
butondan çağırınca geliyor. Tıpkı 4 nolu mesajdaki gibi. Sorun yok. Ama aşağıdaki gibi kullanınca run-time 13 hatası alıyorum.

Kod:
Private Sub CommandButton1_Click()
Call test1
MsgBox (UBound(veri_tabanı, 2))
End Sub
 
Tanımladığınız "veri_tabanı" tüm harfleri ile aynı olmalıdır.

veri_tabanı
veri_tabani
 
Hocam kullandığım kod blokları aşağıda. UserForm1 üzerine 1 listbox ve birkaç buton yerleştirdim . Buton3 ün kodları çalışıyor. Benim yorumum test2 içinde
test1 i çağırdığım için çalışıyor. Fakat buton4 .ColumnCount = UBound(veri_tabani, 2) satırında hata veriyor. Orada sadece test1 i çağırıyor. Bir yerde hata yapıyorum ama çözemedim gitti. Hatta Dim veri_tabani() değişkenini Public veri_tabani() bile yaptım. Gene hata verdi.


Kod:
Dim veri_tabani() 
Sub test1()

Dim syf1 As Worksheet
Set syf1 = Sheets("veri")

With syf1

veri_tabani = .Range("A1:BB" & .Cells(syf1.Rows.Count, 3).End(3).Row).Value

End With


End Sub

Sub test2()

Call test1

With UserForm1.ListBox1
.Clear
.ColumnCount = UBound(veri_tabani, 2)
.ColumnWidths = 30
.Column = Application.Transpose(veri_tabani)

End With



End Sub


Kod:
Private Sub CommandButton3_Click()

Dim syf1 As Worksheet
Set syf1 = Sheets("veri")

With syf1
Call test2
End With

End Sub

Kod:
Private Sub CommandButton4_Click()
Call test1

With UserForm1.ListBox1
.Clear
.ColumnCount = UBound(veri_tabani, 2)
.ColumnWidths = 30
.Column = Application.Transpose(veri_tabani)
End With

End Sub
 
Userform kullanmak istediğinizi ilk mesajınızda belirtseydiniz konu bu kadar uzamazdı.

Değişkeni aşağıdaki gibi tanımlayıp deneyiniz.

Kod:
Global veri_tabani()

Ya da;

Kod:
Public veri_tabani()

İki şekilde de olumlu sonuç aldım.

ÖRNEK DOSYA
 
Hocam sizi çok yordum. Emeğiniz ve ilginiz için çok teşekkürler. Konu çözülmüştür. :)
 
bende böyle bi sorun var runtime 13 type mismatch

basla = Range("A1").Value kodum bu yardımcı olursanız sevinirim
 
Örnek dosyanızı paylaşınız. Bu şekilde yardım almanız zor olur.
 
Geri
Üst