Değişkene modül atamak

mnz

Katılım
5 Eylül 2005
Mesajlar
282
Excel Vers. ve Dili
Excel 2002 (Tr)
Modül değil makro atamak olacktı. :D

if i=1 then set y=sheets("Sayfa1") and a=Makro1 and b=Makro2
if i=2 then set y=sheets("Sayfa1") and a=Makro3 and b=Makro4


nasıl yapılır??
 
Son düzenleme:

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Modül ismi ile ne yapmak istediğinizi belirtirseniz ona göre cevap verelim.
 

mnz

Katılım
5 Eylül 2005
Mesajlar
282
Excel Vers. ve Dili
Excel 2002 (Tr)
if i=1 then set y=sheets("Sayfa1") and a=Modul1 and b=Modul2
if i=2 then set y=sheets("Sayfa1") and a=Modul3 and b=Modul4
........
........
IF COMBOBOX1="A" THEN
CALL a
CALL b
CALL c
CALL d
en dif

i 1 olduğunda modül1 ve modül2 aktif olacak (tarama ve yazdırma)
i 2 olduğunda modül3 ve modül4 aktif olacak ama her halükarda a b değişkenini kullanacağım.
Kodları uzun uzun tekrar yazmak yerine bu kısa kod ile işlem bitecek.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Modül çağırmak diye bir durum sözkonusu değildir. Ancak modülde yazan prosedürleri çağırabilirsiniz. Bunun içinde prosedürün adını yazmak yeterlidir.
 

mnz

Katılım
5 Eylül 2005
Mesajlar
282
Excel Vers. ve Dili
Excel 2002 (Tr)
Modül değil doğru. Makro isimlerini değişkene nasıl veririz. Yani a bazen Makro1 bazen Makro2 olabilirmi?
Ben denedim hata veriyor.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Modül değil doğru. Makro isimlerini değişkene nasıl veririz. Yani a bazen Makro1 bazen Makro2 olabilirmi?
Ben denedim hata veriyor.
Değişkene aktarmaya gerek yoktur. Direk makronun adını kullanabilirsiniz. Örneğin,

Kod:
IF COMBOBOX1="A" THEN
makro1
makro2
.
.
.
en dif
Ama değişkene aktarmakta ısrar ederseniz aşağıdaki gibi kullanabilirsiniz.
Kod:
if i=1 then 
set y=sheets("Sayfa1")
a="Makro1" 
b="Makro2"
end if
 

mnz

Katılım
5 Eylül 2005
Mesajlar
282
Excel Vers. ve Dili
Excel 2002 (Tr)
Sayın leventm basitçe anlatmaya çalışayım.

Combobox lar vasıtasıyla sayfa ve kriter seçiliyor. Seçilen kritere göre sayfada bazı işlemler yapılıyor. Ve bu işlem sonucundaki verilerle Makro1 işlemi yapılıyor ve listeleme yapılıyor. Çıktı alınıyor. Her sayfa aynı kalıpta ama çıktı alınacak sayfaya aktarım biçimi farkı. Bü yüzden Makrolar farklı. Makrolarım çok uzun olduğu için hepsini içiçe almak istemiyorum.Programı baştan yazmam gerekir.
Düşünmemize yardımcı olması açısından şöyle söyleyeyim. Örneğin A1 den A10 a kadar hücreler seçilecek. Ancak, değişkene bağlı olan sayfadaki A1:A10 seçilecek .Sayfayı aktif etmeden şöyle yapılabilir
if textbox1="Sayfa1" then set a=Sheets("Sayfa1")
if textbox1="Sayfa2" then set a=Sheets("Sayfa2")
if textbox1="Sayfa3" then set a=Sheets("Sayfa3")
a.Range("A1:A10").select

Burada "a" değişkeni 3 sayfa da olabilir.Benim istediğim de aynen bu a değişkeni şarta bağlı olarak farklı Makro olabilirmi?

Yukarıdaki verdiğiniz kodları daha önce denemiştim. makro call ile çağrılırsa istediğim olmaz. Ancak Call a olursa a değişkenine atanmış olan ilgili makro çalışacaından işlem sonuç verir ama ben henüz buraya gelemedim. a=makro1 de hata veriyor.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Run komutunu kullanın. Yani,

a="makro1"
run a
 

mnz

Katılım
5 Eylül 2005
Mesajlar
282
Excel Vers. ve Dili
Excel 2002 (Tr)
Sayın leventm çok teşekkürler. :D
 
Üst