Set olayı hakkında yardım..

Katılım
5 Aralık 2007
Mesajlar
635
Excel Vers. ve Dili
Office 2007
Altın Üyelik Bitiş Tarihi
08-05-2021
Merhaba arkadaşlar,
VBA ve makrolarla bu forumda gördüklerim ve okuduklarım yardımıyla bir şeyler yapmaya çalışıtorum. Bilgi olarak bir temeli ve daha öncesi yok. Dolayısıyla konuya ortasından dalmış bulunuyorum. :) Öncesi olmayınca da çok basit sayılabilecek konularda takılıp kalıyorum. Matığını çözemediğim bir konu da örn; Set a= diye başlayan kodlar. Bir çok yerde kullanmama rağmen nerde başlayıp nerede bittiğini çözemedim doğrusu. Bazen aynı makro içindeki iki set ten biri çalışırken diğeri çalışmıyor. Örneğin ;
Set c = [ARŞİV!B65536].End(3).Offset(1, 0)
Set b = Sheets("FATURA").Range("B2:S" & ss)
şeklinde yazdığım her iki set de sorun çıkarmazken,
Bir başka userforma yazdığım setlerden
Set c = [STOK!B:p].Find(TextBox2 * 1, lookat:=xlWhole)
Set d = [GN!B65536].End(3).Offset(1, 0)

set c çalışrken Set d de tık yok.. Oysa aynı set bir başka userforma yazılmış kodlar içinde çalışıyor. Sadece sayfa ismi değişik. Kısaca bu Set olayının mantığını bana açıklayacak bir arkadaşın yardımına ihtiyacım var. İlgilenecek arkadaşlara teşekkür ederim.
Dava konusu olan set yukarıdaki örnekte "Set d " diye adlandırılandır..:D
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,124
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Boş bir dosyada denediğimde herhangi bir hata ile karşılaşmadım. Sağlıklı yorum yapabilmek için sizin dosyanızı görmek gerekir.

Set komutu değişkeni hafızaya almak için kullanılır.
 
Katılım
5 Aralık 2007
Mesajlar
635
Excel Vers. ve Dili
Office 2007
Altın Üyelik Bitiş Tarihi
08-05-2021
Merhaba Sayın Korhan Ayhan,
Mesajımda yazdığım gibi aynı kodlar bir başka makro içinde çalışıyor. Öğrenmek istediğim daha önce verilmiş olan set komutlarını bir şekilde sonlandırmak mı gerekiyor acaba. Eğer öyle ise nasıl sonlandırılır? Bir sayfada çalışan komutun bir başka userform içinde çalışamamasına bir anlam veremediğim için bir bilene sormak istedim.Çalışma bana göre bira karışık olduğu için göndermemiştim. Dosyayı ekte gönderiyorum. Sözünü ettiğim set GN isimli userformun TextBox2_AfterUpdate olayına yazılmış kodlar içinde. Fazla uğraştırmamak için diğer butonları kaldırdım. Kontrol için açılan userformda barkod kutusuna 1001 ,1002,4004,4005 yazın..ilginize teşekkür ederim.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,124
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Eklediğiniz dosyada denemeler yaptım.

"Set d" tanımlaması 4 değerini alıyor. Daha sonrada "d" değişkenine aşağıdaki tanımlama yapılmış. Sorun bundan kaynaklanıyor olabilir. Ayrıca setlenen "d" değişkeni kod içinde hiç kullanılmamış.

d = ISL_NO
 
Katılım
5 Aralık 2007
Mesajlar
635
Excel Vers. ve Dili
Office 2007
Altın Üyelik Bitiş Tarihi
08-05-2021
Merhaba Korhan bey,
Sabrınıza güvenerek yazıyorum; yazdıklarınızdan fazlaca bir şey anladığımı söyleyemem.:) Benim set olayından anladığım; kodları sadeleştirmek için bazı tariflerin kısa tanımı.. Yani "falanca mahalledeki filanca sokağın köşesindeki büyük bina " demek yerine "Kızılay postanesi" demek gibi bir şey..(Bu arada öğrencilik yıllarına döndük bu tarifle.:) ) d yi daha önce tanımlayıp daha sonraki işlemlerde d ye ISL_NO daki değeri vermek istiyorum. Ardından gelecek olan kodlarla da
d.Offset(0,1)=textbox2
d.Offset(0,2)= textbox3
..................
gibi düşünmüştüm.. d=ISL_NO satırını kaldırınca ondan sonra gelen kodlar çalışıyor. (Bu arada ISL_NO userformdaki işlem no yazılan textbox.) Bundan, d tarifinin doğru olduğu sonucunu çıkarıyorum. Ancak d ye niçin istediğimi yazdıramıyorum bir türlü anlayamadım. İlgilendiğiniz için çok teşekkür ederim. Zaman ayırabilir de cevaplarsanız sevinirim. Esen kalın..
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,124
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Tabiki Set komutu dediğiniz işlem içinde kullanılır. Anladığım kadarıyla "d" değişkenine bir değer atamak istiyorsunuz fakat bu değere daha sonra başka değer atayarak değiştirmek istiyorsunuz. Bunu yazdığınız kodla zaten yapmışsınız fakat bu "d" değişkeninin aldığı ilk değeri yoksayar. Yani yeni değer olarak hafızada yer tutar.

Eğer yapmak istediğiniz işlemi açıklarsanız çözüm yolu sunabiliriz.
 
Katılım
5 Aralık 2007
Mesajlar
635
Excel Vers. ve Dili
Office 2007
Altın Üyelik Bitiş Tarihi
08-05-2021
Tekrar merhaba Korhan Bey,
Önce ilginize çok teşekkür ederim. Yapmak istediğim; adresi d ile tanımlayıp, hem bu d ye her seferinde farklı bir değer atamak, hem de bu adresi esas alarak farklı adreslere değerler atamak istiyordum. Örn; d.Offset(0,2)= textbox5 gibi. Ama daha önceki mesajımda yazdığım gibi d değişkenine değer atamazsam kodlar çalışıyordu. Ben de d yerine,d ile tanımladığım adresin tamamını yazıp daha sonra d.Offset(0,3).... şeklinde devam ederek işlemi yaptırdım.
Kodlar aşağıdaki gibi;
Set d = [GN!B65536].End(3).Offset(1, 0)
.......
......
[GN!B65536].End(3).Offset(1, 0) = ISL_NO
d.Offset(0, 1) = [S1!D5]
d.Offset(0, 2) = "*"
d.Offset(0, 3) = "GÜNLÜK SATIŞ"
d.Offset(0, 4) = Date
d.Offset(0, 5) = Date
d.Offset(0, 6) = ISL_NO * 1
d.Offset(0, 7) = TextBox2 * 1
d.Offset(0, 8) = TextBox3
d.Offset(0, 10) = TextBox1 * 1
d.Offset(0, 11) = TextBox4
d.Offset(0, 12) = Format(TextBox5 * 1, "#,##0.00") * 1
d.Offset(0, 13) = TextBox7 * 1
d.Offset(0, 14) = Format(0, "#,##0.00")
d.Offset(0, 15) = Format(0, "#,##0.00")
d.Offset(0, 16) = d.Offset(0, 10) * d.Offset(0, 12)
......
.....
End sub
İlginize ve sabrınıza tekrar teşekkür eder iyi günler dilerim..
 
Üst