Makroda bir veya birden çok değer döndürmek

Katılım
3 Mart 2005
Mesajlar
571
Excel Vers. ve Dili
Excel 2000 Ing.
merhaba arkadaşlar.

normalde birçok nesne aynı işlemi yapıyorsa bir prosedur yazıyoruz ve her defasında bu proseduru çalıştırıyoruz. ama yapılacak işlemler aynı olmasına rağmen kriterler değişince sonuç değişiyor dolayısıyla tekrar kod yazmak gerekiyor. bunun için ?

prosedur yazarken fonksiyonlarda olduğu gibi bir veya birden çok sonuç değeri döndürmek mümkün olur mu.

ben global değişkenler tanımlayarak kısmen yaptım ama birebir istediğim gibi olmadı. böyle bir özellik var ise öğrenmek istiyorum doğrusu.
:x

teşekkürler.
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
:?


Biraz karışmış galiba yazdıklarınız. Prosedürler ile nesneler üstünde bir işlem yaptırıyoruz, fonksiyonlar ile bir değer döndürüyoruz. Kriterlerden kastınız örneğin farklı sayfa biçimlerinde aynı prosedürü kullanmak ise bunun içinde prosedürün başında bir inputbox veya userform ile kodda kullanacağımız değişkenleri kullanıcıya sorabiliyoruz. Yada biraz daha zahmetli iş yapıp kullanacağımız hücre yada alanları excel'in tespit etme şansı var ise bunun için kod yazabiliriz.. yada ben anlamadım sorunuzu tam olarak. :)
 
Katılım
3 Mart 2005
Mesajlar
571
Excel Vers. ve Dili
Excel 2000 Ing.
Sevgili @danersin çok teşekkür ederim
sizi ve diğer Moderatör arkadaşları takdir ediyorum,
Ã?zellikler sizin herkese kendi işinizmiş gibi yardım etmeye çalışmanıza imreniyorum...

Anlamamanızın sebebi benim düzgün anlatamamdan başka birşey değil.

bir örnekle anlatmaya çalışayım.

elimde (stokadı,miktarı, ve grup) alanları olan bir tablom olsun.
bir prosedür yazalım. bu prosedür form1 deki combobox1'in text'ini grup kriteri kabul ederek tablomdan yazdığım grubu filtrelesin ve başka bir yere atsın. Burdaki verileri de seçtirerek aynı formdaki listbox1'in Rowsource özelliğine atasın.

tespit:
kriter sabit ve combobox1.text oluyor,,
filtrelenen verilerin adresi listbox1'e atanıyor


benim diyelimki 10 formum var ve hepsinde bu makroyu kullanmak istiyorum.
gerçi kodları kopyalayarak istenilen şey yapılabilir ama yanlızca bu kodlar la işimizi yapmak mümkün olur mu?
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
@isakarakus, ben bişeyler yazmışım diye sorunuz gümbürtüye gitti :D

Aslında formlarıyla, diğer kodları ile bir örnek dosya hazırlasanız, onun üstünde hepimiz çalışsak, güzel bir örnek olur tüm arkadaşlar için belki.
 
Katılım
3 Mart 2005
Mesajlar
571
Excel Vers. ve Dili
Excel 2000 Ing.
tamam güzel fikir.
ben kısmen bir çözüm buldum kendimce ama bu işi yapacak hazır kodlar olması lazım diye düşünüyorum.
neyse ben dosyayı hazırlayıp en kısa zamanda göndereceğim.
teşekkürler.
kolay gelsin.
 
Katılım
3 Mart 2005
Mesajlar
571
Excel Vers. ve Dili
Excel 2000 Ing.
merhaba,
:hey:
bir deneme yaptım, basit oldu ama ne demek istediğimi anlatabilmişimdir umarım.

bu çalışmayı yapınca çok kopmlex, çok amaçlı bir filitreleme sistemi oluşturulabileceğini gördüm.
Ama yine de bu olayı daha kolay yapan excel komutu olduğunu zannediyorum.
ne varki böyle birşey bulamadım... :kafa:
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
Sn. isakarakus çok güzel örnek olmuş , elinize sağlık.
Sanırım bu örnekle ilk sorunuzda ne kastettiğinizi biraz daha anladım. Çalışmanızda ayrıca bir fonksiyon kullanmanıza hiç gerek yok. Fonksiyonu kaldırdım. Birde filter yaptığınız makroda gereksiz select satırları vardı. onlarıda ayıkladım. Bir inceleyin bakalım olmuşmu. (3 defa başından kalkmak zorunda kaldım, hata yapmış olabilirim) Böyle adım adım doğruyu beraber bulacağız.
 
Katılım
3 Mart 2005
Mesajlar
571
Excel Vers. ve Dili
Excel 2000 Ing.
harika olmuş. teşekkürler.

gerçekten

[vb:1:bbcbaecec0]Call stokal(ComboBox1.Text, "stok")[/vb:1:bbcbaecec0]

kodu programcılar için kutsal bir kod olsa gerek. :lol:

yanlız bu kod da geriye değer döndürmüyor.

biz prosedür içerisinde adres global değişkenine atama yaparak değer döndürme görevini yapıyoruz.
işimizi görüyor mu? görüyor. bu iyi

ben bunun izerine biraz daha uğraşıp daha kapsamlı her istek için kullanılabilecek filtre sistemi oluşturmaya çalışacağım.

sorun olursa her zamanki gibi sizlere soracağım.

bitince herkes için faydalı bir eser olmasını diliyorum.
iyi çalışmalar.

Sevgili @danersin sizede tekrar teşekkür ederim :)
 
Katılım
3 Mart 2005
Mesajlar
571
Excel Vers. ve Dili
Excel 2000 Ing.
sevgili @danersin,
sayenizde güzel bir modül sahibi oldum
gerçekten benim için faydalı bir eser oldu.
umarım diğer arkadaşlar için de faydalı olur.
ihtiyaç dahilinde geliştirmeye devam edeceğim.
herkese iyi çalışmalar
 

Hüseyin

Administrator
Yönetici
Admin
Katılım
2 Haziran 2004
Mesajlar
3,541
Excel Vers. ve Dili
Excel 2010 - Türkçe
Tavsiye;

Form üzerine, TAMAM, KAPAT veya UYGULA gibi bir buton koyarsanız faydalı olur, zira ben seçimleri yaptıktan "Þimdi ne yapmam gerekiyor?" diye düşündüm.
Sonra formu kapatınca işlemi yaptığını gördüm.
 
Katılım
3 Mart 2005
Mesajlar
571
Excel Vers. ve Dili
Excel 2000 Ing.
merhaba,
tavsiyeniz için teşekkürler.
bu dosyanın amacı sadece filtre yönetimini genelleştirmek olduğu için başka bir şeye ihtiyaç duymadım.

yani marifet formda değil kodlarda.

Anlaşılan hala anlatım zorluğu çekiyorum.

bu modul tek kriterli olan tüm filtreler için kullanılabilir.

kodlar aynen şöyle

[vb:1:fcc765bd0a]Global adres As String

'excel.web.tr'den
'Bu Makro genel filtre amaçlıdır.

'******************************************************
' AÇIKLAMA
'****************************************************** // Ã?rnekler

'KaynakSayfa : Filrelemenin yapılacağı sayfa // "stok"
'FiltreBaşlığı : Filtrelenmek istenen tablonun başlığı // "A1:C1"
'FiltreAlanı : Filtrenin uygulanacağı alan // 3 "yani c1 hücresi"
'Ã?lçüt : Büyüklük,küçüklük...(>,<,=,<>..) // "="
'Kriter : Filtrelenen değer // Combobox1.text
'AdresAlanı : Filtre sonucu alınmak istenen verilerin alanı // "A1:B1"
'HedefSayfa : Filtrelenen verilerin kopyalanacağı sayfa // "stok"
'HedefAlan : Filtrelenen verilerin kopyalanacağı alan // "H1:I1"
'NOT:Hata denetim işlemleri henüz yapılmadı


Sub AdresAl(KaynakSayfa, FiltreBaşlığı, Ã?lçüt, Kriter, AdresAlanı, HedefSayfa, HedefAlan As String, FiltreAlanı As Integer)

Application.ScreenUpdating = False
Sheets(HedefSayfa).Select
Range(Range(HedefAlan), Range(HedefAlan).End(xlDown)).Clear
Sheets(KaynakSayfa).Select
Range(FiltreBaşlığı).AutoFilter
Range(FiltreBaşlığı).AutoFilter Field:=FiltreAlanı, Criteria1:=Ã?lçüt & Kriter, Operator:=xlAnd
Range(Range(AdresAlanı), Range(AdresAlanı).End(xlDown)).Copy
Sheets(HedefSayfa).Select
Range(HedefAlan).Select
ActiveSheet.Paste
Sheets(KaynakSayfa).AutoFilterMode = False
Application.CutCopyMode = False
adres = HedefSayfa & "!" & Range(Range(HedefAlan), Range(HedefAlan).End(xlDown)).Address

End Sub[/vb:1:fcc765bd0a]

kullanmak için
örnek kodlar:

[vb:1:fcc765bd0a]Private Sub ComboBox1_Change()
Call AdresAl("stok", "A1:C1", "=", ComboBox1.Text, "A1:B1", "stok", "H1:I1", 3)
ListBox1.RowSource = adres
End Sub[/vb:1:fcc765bd0a]

[vb:1:fcc765bd0a]Private Sub ComboBox2_Change()
Call AdresAl("firma", "A1:C1", "=", ComboBox2.Text, "A1:B1", "firma", "H1:I1", 3)
ListBox2.RowSource = adres
End Sub[/vb:1:fcc765bd0a]
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
Bu forumun en güzel yanı insana böyle pratik yapmak için bol bol malzeme sağlaması.
Güzel olmuş elinize sağlık.
 
Katılım
3 Mart 2005
Mesajlar
571
Excel Vers. ve Dili
Excel 2000 Ing.
teşekkürler.
 
Üst