Aynı Combobox için tek bir kod yazmak

Katılım
1 Mart 2005
Mesajlar
249
Merhaba,
Yaptığım çalışmada bir çok userform var. Bunların bazılarında aynı comboboxu kullanmak istiyorum. Haliyle comboboxun RowSource özelliği hep aynı oluyor. Programı şişirmemek adına bunları tek bir modülde nasıl yapabilirim? Nasıl bir değişken tanımlamam gerekiyor?
Yardımlar için şimdiden teşekkürler.
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
Sorunuzu doğru anladıysam , bir modül altına

[vb:1:bcea4175cb]Option Explicit
Public kompkay As String

Sub combolarrow()
kompkay = "sayfa1!$a$1:$a$10"
End Sub[/vb:1:bcea4175cb]

userformların altınada

[vb:1:bcea4175cb]Private Sub UserForm_Initialize()
combolarrow
ComboBox1.RowSource = kompkay
End Sub[/vb:1:bcea4175cb]

yazarsanız (tabi ilk prosedürde rowsource kaynağını böyle direk değil belli şartlarla oluşturabilirsiniz) ve rowsource mantığında değişiklik yapmak isterseniz tek yerden yapmış olursunuz.

Belki her combo box için class module yazmak daha kullanışlı (yada hissediyorum bir sonraki soru bu) :D ama benim tercihim bu şekilde. Umarım anlaşılırdır.
 
Katılım
1 Mart 2005
Mesajlar
249
Merhaba,
Class Module konusunda aslında hiç bilgim yok.
Verdiğiniz yöntemi uygulayacağım.
Ancak sorumu şöyle genişletsem sanırım daha güzel olur.
Þimdi tüm comboboxlar için özel bir fonksiyon olsa, bu fonksiyonun değişkenleri olsa, sayfa adı, sütun adı, başlangıç satırı değişkenleri olsa, bu değişkenleri her combobox için tanımlasak ROWSOURCE özelliğini böyle bir fonksiyonla sağlayabilirmiyiz?
Eğer sağlanıyorsa program hızında nasıl bir değişiklik olur?
Eğer sağlanıyorsa nasıl yapabilirim?
Teşekkürler.
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
cako,
bu fonksiyonun değişkenleri olsa, sayfa adı, sütun adı, başlangıç satırı değişkenleri olsa
Her combobox'ın kendine ait ve statik bir sayfa adı, sütun adı , başlangıç satırı belli ise doğrudan userform altında rowsource'ı yazmak hepsinden pratik değilmi.. Yani dediğiniz beyin cimnastiği olarak yapılır belki ama şu an faydasını pek gözümde canlandıramadım açıkcası. Fonksiyon tam olarak ne yapmış olacak tüm bu parametreleri verdikten sonra?
 
Katılım
1 Mart 2005
Mesajlar
249
Tabi ki haklısınız. Ben sürekli kodlarla uğraşırken kendime özel fonksiyonlar oluşturayım dedim. Her seferinde combobox rowsource belirtmeden, direk kaynak sayfanın adını, sütun nosunu ve başlangıç satırını vereyim demiştim. Böylece rowsource için gerekli sayfa adı ve hücre aralığını bir değişken formatında yazmak daha kolay ve daha anlaşılır, hatta iki de bir dönüp formatı nasıldı diye başka taraflara bakmamış olurum.
Mesela
Modüle xxx (combobox1,sayfa5,B,2) gibi bir fonksiyonla modülü çalıştırayım. Modül, çağrıldığı user formadaki belirtilen adlı comboboxun row source için belirtilen sayfanın ilgili satır ve kolonuna bakarak row source oluştursun.
Biraz uçukça ama .
Sadece sadelik ve vakit almaması için güzel olur diye düşünmüştüm.
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
Uçukca değil beyin jimnastiği. Bu dediğiniz kodları yazarken pratiklik sağlar gibi gözüksede rowsource yazmayık aklınızda tutmak yerine fonksiyon parametrelerini ne şekilde yazacağınızı aklınızda tutmuş olacaksınız (ve kullanmaya kullanmaya rowsource yazmayı unutacaksınız:) Ã?te taraftan kodları yazarkenki pratiklikten daha önemli olan kodların çalışırkenki pratikliği , bu durumda her projenize böyle bir fonksiyon ekleyeceksiniz kaynağında yazmazsanız rowsourcu. değilmi?
 
Katılım
1 Mart 2005
Mesajlar
249
Sonuna kadar haklısınız
Dedim ya sadece düşünmüştüm.
Eğer sağlanıyorsa program hızında nasıl bir değişiklik olur?
diye merak da etmiştim.
Neyse burada fazla meşgul etmeyelim bu konuyu bence. Simdilik sizi dinleyeyim.
Daha öğrenecek çoookk konu var.
Saygılarımla
 
Üst