-1

-

Konu:EXCEL ÜZERĐNDE MAKRO UYGULAMALARI
Makro: Sık yapılan işleri tekrarlayan yapılardır. Excel’de belirli bir işi tekrarlı olarak (yinelemeli) yapıyorsanız, bu işi makro ile otomatik hale getirebilirsiniz. Örneğin her ay sonu yaptığınız işlemler. Makro, belli bir işi yapmak üzere her istediğinizde çalıştırabileceğiniz bir Visual Basic modulü içersine depolanmış komutlar ve fonksiyonlar dizisidir.

Makro Türleri
Makroları, oluşturma yöntemine göre iki grupta toplayabiliriz. Kayıt (Record) Yöntemi ile makro oluşturma. Visual Basic Editörü ile makro oluşturma. Makro kaydetmek kasete müzik kaydetmeye benzer. Bir kez kaydedilen müzik nasıl tekrar tekrar çalınabiliyorsa bir kez kaydedilen makro da tekrar tekrar çalıştırılabilir. Makro kaydetmeye yada yazmaya başlamadan önce makronun yapacağı işe göre kullanılacak komutlar ve adımlar planlanmalıdır. Çünkü özellikle kayıt makrosu oluşturulurken bir hata yapılırsa hatayı düzeltme adımları da kaydedilecektir. Her yeni bir makro kaydedişinizde; makro, çalışma kitabına eklenen bir modül sayfasına saklanır. Visual Basic editörü ile de makro düzenlenebilir. Visual Basic Editörü ile makroları, bir modülden diğerine ya da çalışma kitapları arasında makro kopyalayabilir ve makro ya da modülün adını değiştirebilirsiniz .

MAKRO GELĐŞTĐRME
Bu bölümde bir kayıt makrosunun nasıl yaratılacağı, çalıştırılacağı ve yeniden düzenlemelerin yapılması işlemleri anlatılmaktadır. Kayıt makroları daha önce de belirtildiği gibi rutin işleri otomatik hale getiren işlem tanımlamalarındır. Veri üzerinde yapılacak işlemler bir kez yapılırken makro olarak kayıt edilir (record). Ardından bu makro yeni veriler üzerinde kullanılır.

A. Makro Geliştirmede Kullanılacak Adımlar
Bu yöntemi kullanmadan önce yapacağımız işin adımlarını çok iyi belirlemeliyiz hatta gerekiyorsa bir kenara adım adım not alın. Makro kaydetme: 1. Araçlar menüsünden Makro komutunu ve Yeni makro kaydet komutunu seçin . 2. Makro Adı kutusuna makro için bir ad yazın . Örneğin “Deneme”.

-2-

Şekildeki gibi makronun oluşum tarihi ve hangi makinada oluşturulduğu gibi bilgiler verilir.. Not: Makro adının ilk karakteri harf olmalıdır. Diğer karakterler harf, rakam yada alt çizgi karakteri olabilir. Makro adında boşluğa izin verilmez ;boşluk yerine alt çizgi işareti kullanılabilir. 3. Kayıt Makro kutusundan makroyu kaydetmek istediğiniz yeri seçin. Eğer makronuzun Excel’in her yerinde geçerli olmasını istiyorsanız ; makronuzu XLStart klasöründeki, Personal Makro Workbook a kaydedin. Saklama yerleri: This Workbook: Bulunulan çalışma kitabına. New Workbook: Yeni bir çalışma kitabına Personal Makro Workbook: Sadece makroların bulunduğu özel bir çalışma kitabına. Makronuzun bir açıklama içermesi için Description kutusuna açıklamanızı yazabilirsiniz. (Bu açıklama makronun yaptığı iş olabilir). 4. TAMAM düğmesine tıklayarak makro kayır işlemine başlanır. 5. Makroya kaydetmek istediğiniz işlemleri yapın.

6. Kaydı bitirmek için Stop Recording düğmesine tıklayın.. 7.Yada sayfa üstündeki mavi butona(durdurma butonuna basınız.)

Not: Makro kayıt ederken genellikle temiz (hatasız) bir kullanım gerekir. Eğer kayıt sırasında hata yapılırsa bu hatalar makronun çalıştırılmasında da karşımıza gelir. Bunun dışında kayır ederken durum çubuğunda “Recording” açıklaması yer alır.

-3-

B. Makro Iletişim Kutusu

Kaydedilen makroları çalıştırmak, yendien düzenleme ve silmek için makro iletişim kutusu kullanılır.

Đpucu: Çalışmakta olan bir makroyu durdurmak için ESC ye basınız. A. Makroyu Microsoft Excel Araç Menüsünden çalıştırmak 1. Araçlar menüsünden, Makro menüsü oradan da istenine makro seçilir. 2. Makro Adı kutusunan, çalıştırmak istediğiniz makronun adını yazın.Yada altındaki listeden çalıştırmak istediğiniz makroyu seçin. 3. Çalıştır düğmesine tıklayın.

B. Makroyu bir düğme,çizim nesnesi yada grafik yardımı ile çalıştırmak.
Çalışma kitabınızdaki bir butona ,çizim nesnesine yada grafiğe bir makro atayabilirsiniz .Buton, çizim nesnesi yada grafiğe tıkladığınızda bunlara atanmış olan makrolar otomatik olarak çalışırlar

oradan da Makros seçeneğine tıklayın . Record Makro yöntemi ile kaydedilmiş makrolar üzerinde değişiklik yapmak ya da Create Makro yöntemi ile yeni makro geliştirmeyi kapsar Record yöntemi ile geliştirilmiş makroları düzenlemek için: 1. 2. . Makronun atanacağı nesneye tek tıklayarak nesneyi seçin. Bir nesneye bir makro atama adımları 1. Eğer yeni kayıt makrosu kaydedip nesneye onu atamak istiyorsanız Record düğmesine tıklayın MAKRO DÜZENLENME Makro düzenlemek. Đstediğiniz makroyu seçin ve Edit düğmesine basın. Araçlar menüüsünden Makro.-4- C. Varolan bir makroyu atamak için Makro Adı kutusuna nesneye atanacak makronun adını yazın ve Tamam düğmesine tıklayın. 2. Seçili nesnenin üzerinde iken sağ tıklayıp açılan kısayol menüsünden Makro ata ya tıklayın.

Sub deyimi bunun bir altprogram olduğunu gösteriyor. Tek tırnak (‘) işareti ile başlayan satırlar programın çalışmasını etkilemez ancak program içersine yazılacak açıklama satıraları tırnak işareti başlaması gerekir. Not :Excel ve Makro modul sayfası arasında geçiş için klavyeden Alt-Tab kısayolunu kullanabilirsiniz . Sub Düğme1_Tıklat() Bu satır makromuzun adının ne olduğunu gösteriyor. Bu bölümde şimdilik yapabileceğimiz en basit işlem önceden kaydettiğimiz. Makro kaydederken yapmış olduğunuz işlemlerin VBA dilindeki karşılıkları Sub Makro adı ve End Sub deyimleri arasında göreceksiniz. . bir makronun içeriğini değiştirmek ve düzenlemektir. (Rem anlamındadır) End sub ve programın bittiği satır.-5Bu gelen ekran VBA dilinde kod yazmak yada önceden yazılmış makroları tekrar düzenlemek amacıyla kullanılan bir kod geliştirme ekranıdır. Sub ……. adıyla kaydettiğimiz makronun kodları aşağıdaki şekilde görünecektir. Sub Düğme1_Tıklat() i = ActiveCell ActiveCell = (i + 1) End Sub Başlangıç olarak bu kodları satır satır açıklayıp ne işe yaradıklarını anlamaya çalışalım.

Excel gibi diğer uygulamalar da VBA’ı destekler. Nesneler Microsoft uygulamaları tarafından sağlanır. EXCEL VBA Visual Basic for Application (VBA). Microsoft Visual Basic programlama dilinin nesne temelli bir uyarlamasıdır. Sub makroadı() -bu kısımda kodlarınızı yazınEnd Sub Not : Create yöntemi ile oluşturulan makrolar da aynen Record yöntemi ile kaydedilen makrolar gibi çalıştırılırlar. Visual Basic for Application. . Visual Basic bilen kullanıcılar VBA’e alışmaları çok kolay olacaktır. III.-6- Ardından Visual Basic editörü içinde: Sub makroadı() End Sub Alanları görünecektir. Excel bilen kullanıcılar ise hem hem VBA’i öğrenecek hem de Visual Basic’i öğrenecektir. Excel içinde yer alır.

Formlar: (Kullanıcı formları olarak da adlandırılır) Kullanıcıların veri girişi ya da bilgi alış verişi için kullanılan iletişim kutularıdır. Proje gezgininde açık bulunan her çalışma kitabı. Bu nesneler. rengi. Standart Modüller: Özel bir nesne ya da bir formla ilişkisi olmayan kodlan taşırlar. şablon ya da sunumla ilişkilendirilmiş kodların hepsi çalışma kitabı. o pencereyi açtıktan sonra F1 tuşuna basın. Microsoft Project ve Visual Basic ile yazılmış uygulamalar. 2. .-7VBA. Sınıf Modüller: Özel bir nesne tipinin kodunu taşırlar. VBA sayesinde diğer uygulamalarla da iletişim sağlanır. Belgeler. Proje Gezgini Bir çalışma kitabı. değiştirebilir ve aralarında geçiş yapabilirsiniz. proje gezgini ile açık bulunan her çalışma kitabı. Birbirine bağlanabilen bu uygulamalar. Çalışma kitapları ve Çalışma sayfalarıdır.Visual Basic Editörü Excel içinde bir makro ya da VBA kodu yazmak için Visual Basic araç çubuğu üzerinde yer alan “Visual Basic Editor” kullanılır. A. şablon ya da sunumla beraber otomatik olarak kaydedilen bir proje içinde saklanır. olayları temsil eden nesneleri bulacaksınız. Proje gezgini penceresini isterseniz değişik yerlere yerleştirebilir ya da boyutlarını değiştirebilirsiniz. Bir nesnenin boyu. belge. yazı tipi bilgiler bu pencere aracılığıyla düzenlenir. Her proje içinde ise. Not: Visual Basic Düzenleyici içindeki özel bir pencere hakkında bilgi almak için. Visual basic düzenleyicinin içindeki. belge. şablon ya da sunum için bir proje vardır. şablon ya da sunumun içindeki projeleri görebilir. Eğer daha önce Excel ya da Word ortamında makro yazdıysanız. belge. bir nesnenin rengi ya da başlığı gibi bir karakteristiğidir. Uzman ve yeni başlayan kullanıcılar (kendi işleri ile ilgili) gereksinimlerini VBA ile kolayca çözebilecektir. Özellikler Penceresi Bir özellik. güçlü ve kolay kullanılan bir makro dili olarak geliştirilmiştir. 1. Microsoft Power Point. Visual Basic Düzenleyicisi ilk başta daha önce görmediğiniz pencereler ve düğmelerle karışık gelecektir. belge. Microsoft Excel.

ardından Yordam kutusundan. Sub yordamlar standart modüller. Bunun anlamı bu yordamların uygulamanın heryerinden (diğer modüllerden) çağırılabilmesidir. Nesne Görüntüle düğmesine basın. Proje Gezgini penceresinin üst tarafında bulunan Kodu Görüntüle düğmesine basmanız gerekir. Kod Penceresi Bir proje içindeki kodları görebilmek için. Bir Procedure'ın Yapısı Visual Basic düzenleyici ortamına yaratılacak olan program kokdu makro ya da procedure (yordam) olarak adlandırılır. Nesne kutusunda. kodu taşıyan elemana tıkladıktan sonra. Çağrılarak ya da bir olaya tepki olarak çalışır. Seçenekler menüsündeki. herhangi bir olay üzerine basarak. Örneğin bir faiz hesabının sonucunu döndürürler. Function yordamlar ise bir değer döndürüler. Her seferinde bir yordam görebilmek için ise bu kontrol kutusunu temizleyin. . Bir Sub yordamının yapısı: [Private|Public][Static] Sub yordam adı (argümanlar) Deyimler End Sub Yordam çalıştırıldığında Sub ve End deyimleri arasında kalan satırlar işletilir. Kod pencerenin üst tarafında bulunan Nesne (Object) ve Yordam (Procedure) listelerini kullanarak kodlar arasında geçiş yapabilirsiniz. class modüller ve form modülleri içinde yer alırlar. özel bir olaya atanmamış bir Yordam adına tıklayın. Nesne kutusundan. Proje gezgini penceresinin üstündeki. Sub yordamlar varsayım olarak bütün modüllerde Public tanımlanır. Proje gezgini penceresinin üstündeki. nesneye tıkladıktan sonra. Nesne Görüntüle düğmesi 3. Property yordamlar ise bir değer döndürüler. Kod Görüntüle düğmesi Bir nesne ya da formun kendisini görebilmek için ise.-8Referanslar: Diğer projelere olan referansları taşırlar. Kod Görüntüle düğmesine basın. Tam Modül Görünümünü Varsay kontrol kutusunu seçin. Đpucu: Kod penceresinde aynı anda birden fazla yordam görebilmek için. nesneye tıkadıktan sonra. atama yaparlar ve nesnelerin referanslarını düzenlerler. Visual Basic’te değişik türde yordamlar (procedure) kullanılır: Sub Function Property Bir Sub yordamı herhangi bir değer döndürmez. Düzenleyici sekmesinden. Araçlar. Bir modül ya da form içindeki kodu görebilmek için. bir nesneye tıklayın. o olaya atanmış bulunan kodları görün. B. (Genel) üzerine gelin ve Yordam kutusundan.

Örneğin bir düğmeye tıklayarak bir işlemin başlatılması. Olay yordamları kullanıcıların hareketlerine tepki olarak çağrılırlar. Olay yordamları. bir nesnenin alt tire ile olaylara bağlı olarak geliştirilir. Yapısı: Sub yordam adı(arguments ) -deyimlerEnd Sub 2. Bu adlar Visual Basic kod editörü tarafından otomatik olarak ya da manuel olarak oluşturulur.üzerine gelme. MouseDown: Farenin bir tuşuna basmak. metin kutuları. Buna karşın olay yordamları ise kullanıcının yarattığı bir olay nedeniyle çalışır. KeyDown: Bir tuşa basmak. Bir komut düğmesinin olayları: Click: Tıklama GotFocus: Odaklanma. vb) belli olayları tanırlar. Visual Basic nesneleri (formlar. Olay Yordamları Olay yordamları bir olayın (event) oluşmasına tepki olarak çalışırlar.-9Argümanlar ise tanımlanan bir değişken gibidir. düğmeler. o olay için hazırlanmış olay yordamı çalışır. Đyi bir programlama stratejisi içinde bir takım ortak görevler genel yordamlar olarak planlanmalıdır. Örneğin bir dosyanın açılması ya da raporun bastırılması için kullanılabilir. Yapısı: Nesne_Olay Örnek: Command1_Click . Genel yordamlar diğer yordamlardan çağrılırlar. Genel Yordamlar Bir genel procedure belli bir işlemi üstlenen program parçasıdır. Visual Basic’te yordamlar (procedure) ikiye ayrılırlar: Genel yordamlar Olay yordamları 1. Böylece belli bir işlevi olan bu birim programın her yerinden istenildiği kadar çağrılarak kullanılır. Böylece olay oluştuğunda. Böylece kod tekrarına gerek kalmaz. Çağırılan yordamdan geçen değerler olarak tanımlanır.

10 Olay yordamları Visual Basic nesnelerinin olaylarına bağlı olarak geliştirilirler: Örneğin Form1_load olay yordamı bir formun açılması sırasında çalışacak bir yordamı. 2. Fonksiyonlar kullanım bakımından bir işlemi yapan ve istenildiği yerde kullanılabilen bir kod birimidir. Örneğin bir faiz fonksiyonu istenildiği program içinde istenilen yerde çağırılarak kullanılır. . Command1_Click olay yordamı da bir komut düğmesine tıklandığında çalışacak bir kod birimini gösterir. Bir komut düğmesine bir olay yordamı ekledikten sonra. Bir fonksiyon yordamının yapısı: [Private|Public][Static] Function yordam adı (argümanlar) [As tip] -deyimlerEnd Function Fonksiyonlar ayrı bir yordam olarak düzenlenirler. Procedure kutusundan isteğiniz procedure’ı seçin. Fonksiyonlar Visual Basic procedure'ları sadece Sub olarak düzenlenmez. 3. Bu durumda procedure yazılmadan önce adlandırma işleminin yapılması gerekir. Sub procedure’ınız hazır.. 3. Yapısı: Sub kontrol adı_olay adı(argümanlar ) -deyimlerEnd Sub Olay yordamlarının adını kod editörü içinde doğrudan yazabileceğiniz gibi Visual Basic tarafından otomatik olarak koda eklenen yordam ve olay adlarını da kolayca kullanabilirsiniz. Not: Burada procedure’ların adlarıyla ilgili olarak önemli bir konuyu açıklamak istiyorum. Bu işlem için kod editörü penceresinde nesne ve olay seçilir. özellikler tablosundan Name özelliği ile kontrolün adı değiştirilirse Visual Basic bunu takip edemez ve eski procedure’ı genel bir procedure olarak modül genel düzeyine atar. Fonskiyonların kullanımında argümanlar önemlidir. Bir yordam olarak yaratılan fonksiyonların Sqr. Sub yordamlar ile Function yordamlar arasında farklar şunlardır: Bir fonksiyon değer döndürür ve genellikle bir eşitliğin sağında kullanılır. Bir diğer procedure yapısı da Function olarak bilinen fonksiyonlardır. bir dizi işlem yaparlar ve sonucu döndürürler. Fonksiyonlar argümanları alırlar. Bir procedure olarak düzenlenen fonskiyonlar belli bir işlemi kod olarak içeren ve bir değeri geri döndüren program parçalarıdır. 1. Kod editörü penceresinde Object kutusundan istediğiniz nesneyi seçin. örneğin Command1_Click. Val gibi Visual Basic’te hazır olarak bulunan fonksiyonlarla ilişkisi yoktur.

Toplam = Ikramiye + UcretHes(gun. grafik. sayfa üzerinde üzerinde bulunan bir aralık. Function UcretHes(deger1. Đşlemi tamamlar bir değer ya da parametre ile kullanım zorunluluğu yoktur. deger3) -deyimlerEnd Function Yapısı: Ucret = UcretHes(gun.11 Bir sub ise belli bir işi yapar. katsayı) / 360 Örneğin çapı verilen bir dairenin alanını hesaplayan bir fonskiyon ya da verilen dereceyi fahrenheit’e çeviren bir fonksiyon gibi. Fonksiyonlar değişken gibi veri tipine sahiptirler. Bu veri tipi dönecek verinin tipini belirler. baz.. sayfa (sheet). deger2. Nesneler Nesne (obkect) çalışma tablosu (worksheet). Örnek: Dereceyi Fahrenheit'e çeviren fonksiyon Fonksiyonun tanımı: Function Fahrenheit(x) Fahrenheit = x * 9 / 5 + 32 End Function Fonksiyonun kullanımı: Private Sub Command1_Click() Dim Değer As Integer Değer = InputBox(" ") MsgBox Fahrenheit(Değer) End Sub C. bir düğme nesne olarak adlandırılır. Şekil: Microsoft Excel Nesneleri . çizim. Fonksiyonlar bir hesaplamanın parçası da olabilirler. katsayı) Fonsiyon yordamlar bir değeri elde etmemizi sağlarlar. baz.

Range("a1") 1.Worksheet("ocak"). Bunlar Workbook (Çalışma Tablosu). Özellikler Bir nesnenin özelliği onun rengi.12 - Excel VBA'de işlevsel olan makrolar nesneler sayesinde yazılır. Örneğin hücrenin renkli ya da italik olarak yazılması gibi.Bold = True .Workbooks("butce"). Bunlar: Methods (Metotlar) ve Properties (Özellikler) dir. Nesnelerle işlem yapmak için iki önemli aracın bilinmesi gerekir. Metotlar nesnelerle yapılacak işlemleri tanımlar. Özellikler ise nesnenin özelliklerini gösterir. Örneğin bir alanın silinmesi uygun nesne (alan) ve uygun metot (silme işlemi) ile yapılır. Nesneler (objects). Rows (Satırlar).Font. uzunluğu gibi niteliklerini düzenlemek için kullanılır: Range("A1"). Cells (Hücreler). Nesne Application Workbook Worksheet Range Chart Açıklama Excel uygulamasının geneli Excel Çalışma Kitabının tamamı Bir Çalışma Kitabındaki bir Çalışma Tablosu Bir ya da daha çok hücre Bir Çalışþma Tablosundaki bir Grafik Nesne tanımlanmasında nesnenin kendini kapsayan ve kendi içindeki nesne ile birlikte yapılmasından tam nesne tanımlaması ortaya çıkar: Application. Charts (Grafik) vb bir şey olabilir.. Excel'de kontrol edilecek şeyleri temsil eder.

Aşağıdaki tabloda yaygın kullanılan özellikler yer almaktadır: Özellik ActiveCell ActiveSheet ActiveWorkbook Bold Italic Column Row ColumnWidth Hight Width RowHeight Selection Value Açýklama Aktif pencerenin aktif hücresi Aktif Çalışma Kitabının aktif Çalışma Tablosu Excel'deki aktif Çalışma Tablosu Metnin harflerinin kalın görünmesi Metnin harflerinin yatık görünmesi Bir alandaki ilk kolonu tanımlayan sayı Bir alandaki ilk satırı tanımlayan sayı Belirtilen alanda kolonların genişliği Nesnenin yüksekliği Nesnenin genişliği Belirtilen alandaki satırların yüksekliği Seçilen alan ya da nesne Bir hücrenin içindeki değer 3..Font. Nesne.Metot ActiveCell. Nesnelerinin Önemli Özellikleri Her nesnenin çok sayıda özelliği vardır.1). Metotların kullanımında nesne.Close 4. ardından nokta ile metot kullanılır. Aşağıdaki tabloda yaygın kullanılan metotlar yer almaktadır: Metot Add Clear Açıklama Aynı tipte yeni bir nesne yaratır Belirtilen alanın silinmesini . Metotlar Metotlar ise nesne-temelli programlamanın işlemlerini (komutlarını) oluştururlar. Her nesne olası işlemlerini metotlarıyla tanımlar.Size = 34 2.13 Cells(5.Clear ActiveWorkbook. Nesnelerin Önemli Metotları Her nesnenin çok sayıda metotu vardır.

Value Cells(1.Select Range("A1").Value = "Ne haber?" sağlar Alanın panoya (clipboard) kopyalanmasını sağlar.. Bu işlem için Range ve Cells metotları kullanılır. C.8:8") Range("A:A. Gösterim Excel üzerinde işlem yaparken genellikle hücrelerdeki veriler kullanılır.14 Copy Delete Open Close Activate Örnek: Range("A1:B5").3:3. Sub AralıkFormatla() Workbooks("Book1"). Hücrelerle (cells) işlem yapmak için hücreler içindeki değerleri göstermek gerekir.Bold = True End Sub Aşağıdaki tablo Range metodu kullanarak Bazı A1 gösterimi adreslemeler yapılmıştır: Gösterim Range("A1") Range("A1:B5") Range("C5:D9. Aşağıdaki altprogram A1:D5 aralığındaki hücrelerin görünümünu koyu (bold) olarak değiştirir.Range("A1:D5").F:F") Anlamı A1 hücresi A1 den B5 e kadar Çoklu aralık seçimi A kolonu Birinci satır A dan C kolonuna kadar Birinci satırdan beşinci satıra kadar Birinci. sekizinci satır A.G9:H16") Range("A:A") Range("1:1") Range("A:C") Range("1:5") Range("1:1. A1 gösterimi ile hücre ve aralik.1). Range (“A1”) Cells(1. ve F kolonları .Font. Belirtilen nesneyi siler Çalışma Kitabını açar Belirtilen nesneyi kapatır Belirtilen nesneyi aktifleştirir D.Activate Range("A1:B5").Sheets("Sheet1").C:C. üçüncü. Range metodunu kullanarak A1 gösterimi ile hücre y ada aralık seçebilirsiniz.1) Değerleri: Range (“A1”).Value 1.Delete Range("B5").

.15 - Soru1 Excel sayfası üzerindeki butona tıklandığında sayısal olarak değer arttırma yada azaltma işlemi yapan fonksiyon oluşturulması Cevap:Öncelikle işlemler excel de buton yardımı ile yapılacağı için excel sayfası üzerine once bir buton oluşturulur. Buton oluşturulduktan sonra yeni butonuna basılır ise yeni Düğme3 kod sayfası otomatik olarak karşımıza gelir Aşağıda görülen çıktıda excel sayfası ve kod sayfası birleştirilerek verilmiştir Soruda kullanılan activecell komutu hücrenin üzerinde bulunduğumuz alanı vermek için .

. Yazılan kodlar formda yer almadığı için modul oluşturma gerekir. Aşağıda verilen çıktıda Activewindow komutu ile çalışılan aktif sayfa belirtilmiştir. Bu komut ile birlikte displayworkbooktabs verilmiştir. Moduller çalıştığımız programların içine girebilen yazılımlardır.16 kullanılır. ******************************************************************************** Soru 2:Excel çalışma sayfalarının çizgilerini silmek ve geri getirmek Soruda kullanılan Activewindow komutu çalışma sayfalarını belirtmek için kullanılır.sekmelerini (sayfa altındaki) isimleri yok edip geri getirmek .. Hatırlatma:Bu tür buton komutları otomatik olarak kullanıcının modül oluşturmasını sağlar.Aynı komutun devamında Displaygridlines komutu ise görüntünün durumunu belirtmek için kullanılır ******************************************************************************* Soru3 Excel çalışma sayfalarını. Bu komu ile sekmelerin durumu belirtilmiştir.

.Save ActiveWorkbook.17 - *********************************************************************** Soru4:Çalıştığımız sayfayı kaydedip kapatan makro kodu elde etmek Sub save_Düğme1_Tıklat() Rem çalışma sayfasını kaydetmek ActiveWorkbook.Close End Sub ******************************************************************************************************* Soru5:Çalıştığımız excel sayfasına kayıtlı dosya getirmek ve kayıtlı dosyaları farklı ad ile kaydetmek.(Bu işlem için vba ortamında form oluşturulacaktır) .

Dikkat edilirse çalıştığımız sayfayı kaydedip kapatmak için activeworkbook komutundan yardım alınmıştır.Değilse aynı isimde başka dosyalarda olabilir. Bu işlem için excel sayfası üzerinde iki adet buton yardımı alınacaktır. Kayıtlı dosyayı açmak için ise workbooks komutu kullanılmıştır. Bunun nedeni dosya çağırılırken dosyanın aktivlik bir durumu yoktur. .18 - Form üzerinde iki adet metin kutusu ve iki adet buton oluşturulmuştur. Dosya uzantısı mutlaka belirtilmelidir..Kodlar aşağıda verilmiştir. kilidi açmak. Soru6:Çalıştığımız excel hücrelerini kilitlemek(korumaya almak).

Hafızanın devamlılığı için Dim komutundan yardım alınmıştır. Kullanıcı şifre bilgisini bu Alana girerse sayfa üzerine bilgi girişinde bulunabilir.. Kullanıcı isterse unprotect satırındaki “123” bilgisini silerse aşağıdki gibi bir görüntü ile karşılaşabilir. B1 ile B10 hücreleri arasına renk scalasını yerleştiren excel vba kodlarını hazırlayınız .19 - Cevap Şekilde görüldüğü gibi butonlar yardımı ile yine module otomatik olarak oluşturulmuştur. Soru7:Çalıştığımız excel hücrelerinde A1 ile A10 arasına ardışık olarak 1 ile 10 arasındaki rakamları sırası ile yerleştiren. Set komutu ile sayfa bilgisi hafızada tutulmuştur.

********************************************************************************************************** Soru8:Çalıştığımız excel hücrelerinde A1 ile A4 arasına 1 verisini doldurmak A5 ile A7 hücresine mesaj yerleştiren A6 ile A8 hücrelerine toplam mesajını vba ortamında yazdıran programı hazırlayınız. Ayrıca toplam formülü için Đngilizcedeki karşılığı olan sum komutunun kullanılmasıdır. Đnteriror (içermekte) komutu ile hazır renk skalasından yardım alınmıştır. Cevap Dikkat edilecek nokta verilerin eşitlik sembolü ile başlamamasıdır. Formüllerin ise mutlaka eşitlik sembolü ile başlamasıdır. Soru9:Çalıştığımız excel hücrelerinde aşağıda verilen çıktı işlemine yapan kodların hazırlanması.20 - Cevap Sub Düğme1_Tıklat() For i = 10 To 1 Step -1 Cells(i.Interior.ColorIndex = i Next End Sub Cells(satır. 2).. 1) = i Cells(i.sutun) yardımı ile hücrelere rakamlar a10 hücresinden başlama şartı ile a1 hücresine kadar yazılmıştır.(a1 hücresi ile a10 hücreleri arasına 1 ile 10 .

) Cevap Çıktıda verildiği gibi set komutu ile active hücreler hafızaya atılmıştır Range(“satır.21 arasındaki rakamlar ardışık olarak yerleştirilmiştir. *************************************************************************** Soru10:Çalıştığımız excel hücrelerinde aşağıda verilen görüntüye gore A1 den H2 ye arasına 0 ile 9 arasında rasgele sayı üretilecektir . Başka bir buton ile de sayfa temizliği yapılması istenmiştir.sutun”) tanımlaması ilede çalışma sayfası temizlenmiştir..

Select End Sub Sub Düğme3_Tıklat() 'bir satır alta bır sutun saga ilerler ActiveCell. sutununa kadar değer 'k = 6 + i Bu şekilde de olabilir ActiveSheet.Offset(-1. 0).A3 ile H3 arasındaki formül A1 ile A2 hücrelerinin çarpımı olarak verilecek makroları oluşturunuz. Private Sub UserForm_Click() 'ikinci satır 7 den 15 e kadar ardışık olarak atansın Range("A1:H3").22 A2 den H2 ye kadar 7 den başlayıp H14 e kadar ardışık artan bir veri girişi yapılacaktır. 1).Select End Sub .Cells(2.Offset(0. 1).Formula = "=a1*a2" End Sub Soru11:Çalıştığımız excel hücrelerinde mouse ikonun hareketini butonlara atama Sub Düğme1_Tıklat() ' bir satır alta gider ActiveCell. i) = k k = k + 1 Next Range("a3:h3")..Clear Range("a5:H5") = "yeniformül" Range("A1:H1").Select End Sub Sub Düğme4_Tıklat() 'bir satır üste bır sutun sola ilerler ActiveCell.Offset(1. satırın 1. -1). sutunundan.8.Select End Sub Sub Düğme2_Tıklat() 'bir sutun saga ilerler ActiveCell.Formula = "=int(rand()*10)" k = 7 For i = 1 To 8 '2.Offset(1.

************************************************************************ Soru14:Çalıştığımız excel hücrelerinde dolu ve boş hücrelerinin sayımı.Interior.Interior.ColorIndex = 7 'yada bolge. Sub bolge_Düğme1_Tıklat() Dim bolge As Range Set bolge = Range("a1:b9") Rem renklendirme 'değişik seçme metodu 'bolge. renklendirilmesi.Kursorun durduğu yer alanın içinde olup olmadığı hesaplanabiliyor.Color = vbMagenta 'bos alanları isaretler bolge.Color = vbMagenta mutlaka bölgenin başlangıçta verilmesi gerekir.SpecialCells(xlCellTypeBlanks).ColorIndex = 7 'yada bolge.CurrentRegion alansec. Set bolge = Range("a1:b9"). Current ragion komutu ile satır sutun değerleri belirlenerek.seçimi .Interior.Interior.Select:End Sub Soru13:Çalıştığımız excel hücrelerinde bölge seçimi ve renklendirilmesi.renklendirebilmek için iki metod kullanılabilir 'bolge.23 Soru12:Excel hücrelerinde alan sınırlama (mayın tarlası oyunu) Current range komutu kullanımı.Unutulmamlıdır ki mutlaka current range komutu activecell komutunun devam ettiricisidir.Select Öncelikle seçilen bölgenin hafızaya alınıp Dim bolge As Range bu bölgenin set komutu ile Alanının belirlenmesi gerekir. Sub currentrange_Düğme1_Tıklat() 'Dim alansec As Range Set alansec = ActiveCell..

SpecialCells(xlCellTypeBlanks).SpecialCells(xlCellTypeBlanks). 2) = bos.Color = vbCyan rem dolu alanları saymak için kullanılır ActiveCell(11.Interior.Interior.Color = vbRed rem sayım için gerekli istenilen alana çıkması için rem bos alan secimi bos.Select rem bos alanları renklendirir bos.Count Range("b12") = "dolu" Rem Range("c12") = "=27-c11" ActiveCell(12. .SpecialCells(xlCellTypeBlanks).24 Set bos = Range("a1:c9") Rem sayım için gerekli Rem bos. 2) = "=27-c11" ActiveCell(11.. 1) = "bos" End Sub Soru15:Çalıştığımız excel hücrelerinde belirli tarihten sonraki satırları vb ortamındaki liste kutusuna yazdırmak.Select Rem seçilen yeni alanı renklendirir bos.

7. Aşağıdaki örnekde pc nin saati 21:56 dan büyük ise dosya kaydedilecektir Sub farklıtarih_Düğme1_Tıklat() 'Sub auto_open() 'If Date >= CDate("10. soruya benzer başka bir örnekte belirli bir saati baz alarak işlemlerin durmasını sağlayabiliriz.Aşağıdaki şekle benzer çıktı ile karşılaşırız.2007 tarihinden daha küçük tarihleri birinci ve ücüncü sutundaki bilgileri ile beraber liste kutusuna aktarıyoruz.25 - Bu işlem için mutlaka ofis vb ortamında form oluşturmak gerekir daha sonra kıstasa göre kod yazmak gerekir.Close End Sub .2007") Then If Time >= ("21:56:47") Then ActiveWorkbook. On üç satırlık bilgide ikinci sutundaki tarih bilgilerini karşılaştırıyoruz 9.7.Save MsgBox "Kullanım süresi devamediyor." ActiveWorkbook.2007 yapıyoruz. Bilgisayarımızın kod ile tarihini 9." Exit sub End If MsgBox "Kullanım süresi dolmuştur.10.. Soru16:15.

ScrollArea = "A1:A20" End Sub Soru18:Hücreleri renklendirme ve ardışık olarak veri ile doldurmak Sub Düğme1_Tıklat() Dim i As Integer For i = 1 To 10 Cells(i.i) = 11 . Sub alansınırlandırma_Düğme1_Tıklat() Worksheets("hücre say").ColorIndex = 7 Cells(i. 11 . i). i) = i Cells(i.Interior.ColorIndex = 6 Next End Sub Sub Düğme2_Tıklat() Range("a1".Interior.26 Not:eğer soruda Excel açılır açılmaz işlemlerin otomatik yapılması isteniyor ise Sub auto_open() komutu .Sub farklı tarih_Düğme1_Tıklat() komutunun yerine yazılır. 11 .i Cells(i. Excel dosyası açıldığında butona basmaya gerek duyulmadan program otomatik olarak çalışır. "k20")..i).Clear End Sub . Soru17:Hücre alanlarını sınırlandırmak istersek aşağıdaki formülü kullanmamız yeterlidir.

Interior.27 Soru19:Hücreleri kıstasa göre renklendirme Sub sınırrenk_Düğme1_Tıklat() 'Const limit As Integer = 50 limit = 50 For Each c In Range("c1:c10") ' For c = Range("c2") To Range("c10") If c < limit Then c. For Each c In Range("c1:c10") Yada For c = Range("c2") To Range("c10") Şeklinde Soru 20:Sayfa 1 deki 50 den büyük ve e karekterinde büyük bilgileri sayfa 2 ye aktarma .ColorIndex = 4 End If Next c End Sub Soruda görüldüğü gibi 50den küçük notlar yeşil renk ile sınırlandırılmıştır. Dögü her iki türlüde yaılabilir..

If Sayfa1. j) > "e" Then Worksheets("Sayfa2"). j) > 50 Then Worksheets("Sayfa2").Cells(i. Sub Dim Dim i = Düğme1_Tıklat() i As Integer k As Integer 2 . 1. If Sayfa1. 1) = "" Then Exit Do Satırı programın can damarıdır. j) End If Next Next Worksheets("Sayfa2"). j):rem sayfa 2 için kullanılmıştır End If Next Next For i = 1 To 100 For j = 1 To 100 If Cells(i.Cells(i. j) = Cells(i..Cells(i.sutundaki verilerin boş olup olmadığının kontrolü yapılmaktadır. j) = Cells(i.28 - Sub Düğme1_Tıklat() For i = 1 To 100 For j = 1 To 100 If Cells(i. 1) = Range("a20") Then 'gerçek şart satırı ile şarta uyan veri olup olmadığının kontrolü yapılmaktadır.Select End Sub Soru 21:Excel sayfasındaki verileri kod kullanarak süzmek Bu işlem için kıstasın ve verilerin şarta uyup uymadığının kontrol edilmesi gereklidir.Cells(i.

.Range("a2" & k.Range("a3"). . diğer personel ise çalışma bölümüne göre ücret alacaktır.AutoFilter 'veri süzü uygula Do If Sayfa1.PasteSpecial Sayfa3.satış personeli 550 ytl ücret alacaktır.29 k = 3 'Range("a1").Range("a" & i. Kıdem teminatı ve maaş hesaplanacaktır.Cells(i. depo personeli 450.Cells(i. "e" & i).Üretimdeki personel 500. "e2" & k).Copy Sayfa1.PasteSpecial xlPasteAll End If i = i + 1 Loop End Sub ********************************************************************** Soru22:Aşağıda verilen Excel sayfasındaki verilerin şarta uygun olarak düzenlenmek istenmektedir. 1) = Range("a20") Then 'gerçek şart k = k + 1 Sayfa1. 1) = "" Then Exit Do If Sayfa1.Kıdemler için kişiler 8 yıldan az çalışanlar 400 ytl ücret alacaktır.

Cells(i.Cells(i. 3)) = "satış" Then Sayfa1. 4)) >= 8 And (Sayfa1.Cells(i.3 + not2 * 0. 4) not3 = Sayfa1.Cells(i. 7).30 Cevap Sub Düğme1_Tıklat() Dim i As Integer i = 4 Do If Sayfa1. 3) = g Sayfa1.Cells(21. 6) = 500 ElseIf (Sayfa1. 7) = "geçti" g = g + 1 --------------.not2. 6) = 550 Else Sayfa1. 6) = 450 ElseIf (Sayfa1.Cells(21.Cells(21.Color = vbBlue Sayfa1. 4) = k End Sub . 7) = Sayfa1. 6) = Round(ort) If ort > 49 Then Sayfa1.Cells(i. 4).Interior.Cells(i. 7) = "kaldı" k = k + 1 End If i = i + 1 Loop Sayfa1.Clear Do If Sayfa1.Cells(i.Cells(i.Cells(i.Cells(i.Cells(i.ort değerlerini atayalım not1 = Sayfa1.4 Sayfa1.Cells(i.Interior. toplam geçen ve kalanların sayısını hesaplayalım Sub Dim i = Rem Rem Sayfa1_Düğme1_Tıklat() i As Integer 3 açıkla Range("G3".Cells(i.Cells(i. 5) i = i + 1 Loop End Sub Soru23:Aşağıdaki listeyi 50 ve üstü geçti aşağısı kaldı. 4)) >= 8 And (Sayfa1.kalanları kırmızı renkle belirtip.Cells(i. 6) + Sayfa1.Cells(i. 3)) = "depo" Then Sayfa1. 1) = "" Then Exit Do If (Sayfa1. 3)) = "üretim" Then Sayfa1.>>>>devamı yan tarafta Else Sayfa1. 3) not2 = Sayfa1.Cells(i.Color = vbRed Sayfa1. "G18"). 3) = "" Then Exit Do 'not1.Cells(i.Cells(i..Cells(i.3 + not3 * 0. 5) ort = not1 * 0.not3. 6) = 400 End If Sayfa1.Cells(i.

31 - ..

Sign up to vote on this title
UsefulNot useful