ThisWorbook kod bölümü

Erdinç FIRTINA

Altın Üye
Katılım
14 Şubat 2007
Mesajlar
400
Excel Vers. ve Dili
excel 2003 türkçe
Altın Üyelik Bitiş Tarihi
15-05-2026
Değerli Forum üyeleri,

Kodlarla ilgili bir kaç sorunum var. Bu konuda açıklamaları ve yardımı olan herkese şimdiden çok teşekkürler!!!

1.Çalışma sayfası kod bölümüne nasıl ulaşılabilir?
2.ThisWorbook kod bölümüne nasıl ulaşılabilir?
3.Hangi kodların modüle, hangilerinin ThisWorkbook veya çalışma sayfası kod bölümüne yazılması gerektiğini nasıl anlayacağız?
Böyle bir ayrım yapmak doğru mudur?

Saygılarımla!!!
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,372
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Makro ile ilgili bölüme ulaşmak için :
Araçlar-->Makro--> Visual Basic Düzenleyici
ile gidebilirsiniz. Alt+F11 ile daha kısa gidebilirsiniz.

Bir başka yol ise excel sayfasının aşağısında sayfa isimlerinin yazdığı yere sağ tık yapıp Kod görüntülemeye girerseniz ilgili sayfanın kod bölümüne ulaşmış olursunuz. (Dosyada bunları resimli olarak gösterdim).

Herhangi bir sayfanın kod bölümüne ulaşınca VBAProject sayfasında zaten sayfaları görürsünüz orada ThisWorkbook a tıklarsanız ilgili yere ulaşmış olursunuz.

Örnek dosyada hem workbook hemde 1. sayfada çalışacak bir örnek sundum.

Workbook ta yazılan kodlar ilgili bütün sayfalarda çalışır. Örneğimizde aktif olan sayfada A1 hücresini 1 arttırıyor. Dolayısıyla siz hangi sayfayı aktif (yani seçerseniz) o sayfanın A1 hücresi 1 artacaktır.

Hangi kodlar ilgili sayfaya yazılmalı ? İlgili sayfadaki olaylara bağlı olan kodları sayfa kod bölümüne yazılmalıdır. Örneğin herhangi bir sayfada herhangi bir sütunda çift tıklama sonucunda yapmasını istediğiniz bir işlem varsa bunu o sayfanın kod bölümüne yazabilirsiniz. Örneğimizde Sayfa1(Sheet1) de A sütununda bir değişiklik olduğunda B sütununa günün tarihini yazsın dedik.

Sayfadaki olayların dışındaki kodları ise Modüle yazılmalıdır. Gerektiğinde buraya yazılan modül sayfa kodlarından da çağırılabilir.

Bilmem açıklayabildim mi..
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
.........
3.Hangi kodların modüle, hangilerinin ThisWorkbook veya çalışma sayfası kod bölümüne yazılması gerektiğini nasıl anlayacağız?
Böyle bir ayrım yapmak doğru mudur?.......
Bu sorunuza, Sn Necdet bey örneklerle çok güzel açıklamalarda bulunmuş ama bende kendisinin izniyle kısa bir açıklama yapmak istiyorum. Öncelikle şunu belirteyim böyle bir ayrım yapmak sadece doğru değil, bir zorunluluktur. Çünkü VBA programlama dilide diğer bir çok dil gibi nesneye yönelik bir programlama dilidir, diğer bir deyişle komutlar, nesnelere ve olaylara (events) göre yazılırlar. Exceli ele alırsak, nesneleri aşağıdaki gibi sıralayabiliriz,

1- Application Object (Uygulama nesnesi yani Excel programının kendisi)
2- Workbook Object (Çalışma kitabı nesnesi)
3- Worksheet Object (Çalışma sayfası nesnesi)

Yukarıdaki sıralamaya dikkat ederseniz, her bir alt nesne, bir üst nesnenin bünyesindedir. Yani Excel, kendi içindeki tüm açık çalışma kitaplarını kapsarken, bir çalışma kitabıda kendi içindeki tüm sayfaları kapsar.

Sonuç olarak; yapılmak istenilen uygulama hangi nesnelerde geçerli olacaksa, kodlar o nesneye ve o nesnenin olaylarına göre yazılacaktır. Örneğin, işlem sadece bir sayfa için geçerli ise kodlama o sayfaya yönelik yapılmalıdır. Bu durumda hedef nesne worksheet nesnesi olup, kodlar bu sayfanın kod sayfasına yazılacaktır. Eğer yapılacak işlem tüm sayfalarda geçerli olacaksa bu durumda hedef nesne workbook nesnesi olup kodlar thisworkbook sayfasına yazılacaktır. Son olarakta yapılacak işlem tüm çalışma kitaplarında geçerli olacaksa bu durumda hedef nesne application nesnesi yani Excelin kendisi olacağından kodlar bu nesneye ve onun olaylarına yazılmalıdır.
 

Erdinç FIRTINA

Altın Üye
Katılım
14 Şubat 2007
Mesajlar
400
Excel Vers. ve Dili
excel 2003 türkçe
Altın Üyelik Bitiş Tarihi
15-05-2026
Sayın Necdet_Yesertener ve Sayın leventm,
Yardımlarınız ve açıklamalarınız için çok çok teşekkür ederim.
 
Üst