-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

2. . 2. Makronun atanacağı nesneye tek tıklayarak nesneyi seçin. Varolan bir makroyu atamak için Makro Adı kutusuna nesneye atanacak makronun adını yazın ve Tamam düğmesine tıklayın. Eğer yeni kayıt makrosu kaydedip nesneye onu atamak istiyorsanız Record düğmesine tıklayın MAKRO DÜZENLENME Makro düzenlemek. Bir nesneye bir makro atama adımları 1. oradan da Makros seçeneğine tıklayın . Đstediğiniz makroyu seçin ve Edit düğmesine bası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.-4- C. Araçlar menüüsünden Makro. Seçili nesnenin üzerinde iken sağ tıklayıp açılan kısayol menüsünden Makro ata ya tıklayın.

. (Rem anlamındadır) End sub ve programın bittiği satır. 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 . 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. Bu bölümde şimdilik yapabileceğimiz en basit işlem önceden kaydettiğimiz. Sub deyimi bunun bir altprogram olduğunu gösteriyor. Sub Düğme1_Tıklat() Bu satır makromuzun adının ne olduğunu gösteriyor. 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.-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. adıyla kaydettiğimiz makronun kodları aşağıdaki şekilde görünecektir. Sub …….

Visual Basic bilen kullanıcılar VBA’e alışmaları çok kolay olacaktır. Excel bilen kullanıcılar ise hem hem VBA’i öğrenecek hem de Visual Basic’i öğrenecektir. III. . Excel gibi diğer uygulamalar da VBA’ı destekler. 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. Excel içinde yer alır.-6- Ardından Visual Basic editörü içinde: Sub makroadı() End Sub Alanları görünecektir. Microsoft Visual Basic programlama dilinin nesne temelli bir uyarlamasıdır. EXCEL VBA Visual Basic for Application (VBA). Nesneler Microsoft uygulamaları tarafından sağlanır. Visual Basic for Application.

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

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

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

örneğin Command1_Click. Kod editörü penceresinde Object kutusundan istediğiniz nesneyi seçin. Fonksiyonlar kullanım bakımından bir işlemi yapan ve istenildiği yerde kullanılabilen bir kod birimidir. Bu durumda procedure yazılmadan önce adlandırma işleminin yapılması gerekir. bir dizi işlem yaparlar ve sonucu döndürürler. Procedure kutusundan isteğiniz procedure’ı seçin. 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. Bu işlem için kod editörü penceresinde nesne ve olay seçilir. 1. 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. 2. 3.. Örneğin bir faiz fonksiyonu istenildiği program içinde istenilen yerde çağırılarak kullanılır. Bir diğer procedure yapısı da Function olarak bilinen fonksiyonlardır. Val gibi Visual Basic’te hazır olarak bulunan fonksiyonlarla ilişkisi yoktur. Not: Burada procedure’ların adlarıyla ilgili olarak önemli bir konuyu açıklamak istiyorum. Fonskiyonların kullanımında argümanlar önemlidir. 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. ö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. 3. Command1_Click olay yordamı da bir komut düğmesine tıklandığında çalışacak bir kod birimini gösterir. Sub procedure’ınız hazır. Fonksiyonlar argümanları alırlar.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ı. Bir yordam olarak yaratılan fonksiyonların Sqr. Fonksiyonlar Visual Basic procedure'ları sadece Sub olarak düzenlenmez. 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.

Function UcretHes(deger1. Bu veri tipi dönecek verinin tipini belirler. katsayı) / 360 Örneğin çapı verilen bir dairenin alanını hesaplayan bir fonskiyon ya da verilen dereceyi fahrenheit’e çeviren bir fonksiyon gibi. Ö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. sayfa üzerinde üzerinde bulunan bir aralık. sayfa (sheet). baz. Fonksiyonlar bir hesaplamanın parçası da olabilirler. baz.11 Bir sub ise belli bir işi yapar. katsayı) Fonsiyon yordamlar bir değeri elde etmemizi sağlarlar. çizim. deger3) -deyimlerEnd Function Yapısı: Ucret = UcretHes(gun. Nesneler Nesne (obkect) çalışma tablosu (worksheet). Toplam = Ikramiye + UcretHes(gun. Şekil: Microsoft Excel Nesneleri . grafik. bir düğme nesne olarak adlandırılır.. Đşlemi tamamlar bir değer ya da parametre ile kullanım zorunluluğu yoktur. Fonksiyonlar değişken gibi veri tipine sahiptirler. deger2.

Excel'de kontrol edilecek şeyleri temsil eder. uzunluğu gibi niteliklerini düzenlemek için kullanılır: Range("A1"). Cells (Hücreler). Özellikler ise nesnenin özelliklerini gösterir.Worksheet("ocak"). Örneğin bir alanın silinmesi uygun nesne (alan) ve uygun metot (silme işlemi) ile yapılır. Örneğin hücrenin renkli ya da italik olarak yazılması gibi. 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. Bunlar Workbook (Çalışma Tablosu). Charts (Grafik) vb bir şey olabilir.Workbooks("butce").Font.. Özellikler Bir nesnenin özelliği onun rengi. Rows (Satırlar). Nesnelerle işlem yapmak için iki önemli aracın bilinmesi gerekir. Bunlar: Methods (Metotlar) ve Properties (Özellikler) dir.12 - Excel VBA'de işlevsel olan makrolar nesneler sayesinde yazılır.Range("a1") 1. Nesneler (objects). Metotlar nesnelerle yapılacak işlemleri tanımlar.Bold = True .

Size = 34 2. 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 .Metot ActiveCell.Font.Clear ActiveWorkbook. ardından nokta ile metot kullanılır. 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. Nesnelerin Önemli Metotları Her nesnenin çok sayıda metotu vardır. Metotlar Metotlar ise nesne-temelli programlamanın işlemlerini (komutlarını) oluştururlar.Close 4.1).13 Cells(5. Nesne. Nesnelerinin Önemli Özellikleri Her nesnenin çok sayıda özelliği vardır. Her nesne olası işlemlerini metotlarıyla tanımlar. Metotların kullanımında nesne..

C:C. Bu işlem için Range ve Cells metotları kullanılır. Aşağıdaki altprogram A1:D5 aralığındaki hücrelerin görünümünu koyu (bold) olarak değiştirir.1). Belirtilen nesneyi siler Çalışma Kitabını açar Belirtilen nesneyi kapatır Belirtilen nesneyi aktifleştirir D.Range("A1:D5").Activate Range("A1:B5"). Range (“A1”) Cells(1.Value Cells(1.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.Delete Range("B5"). Hücrelerle (cells) işlem yapmak için hücreler içindeki değerleri göstermek gerekir. Range metodunu kullanarak A1 gösterimi ile hücre y ada aralık seçebilirsiniz.8:8") Range("A:A.Value 1.3:3.14 Copy Delete Open Close Activate Örnek: Range("A1:B5").Sheets("Sheet1"). ve F kolonları .. Sub AralıkFormatla() Workbooks("Book1"). sekizinci satır A. A1 gösterimi ile hücre ve aralik.G9:H16") Range("A:A") Range("1:1") Range("A:C") Range("1:5") Range("1:1. C.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.Select Range("A1").1) Değerleri: Range (“A1”).Font.Value = "Ne haber?" sağlar Alanın panoya (clipboard) kopyalanmasını sağlar. üçüncü. Gösterim Excel üzerinde işlem yaparken genellikle hücrelerdeki veriler kullanılır.

.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 .

sekmelerini (sayfa altındaki) isimleri yok edip geri getirmek . Moduller çalıştığımız programların içine girebilen yazılımlardır.16 kullanılır. Hatırlatma:Bu tür buton komutları otomatik olarak kullanıcının modül oluşturmasını sağlar. Bu komut ile birlikte displayworkbooktabs verilmiştir. Yazılan kodlar formda yer almadığı için modul oluşturma gerekir. ******************************************************************************** 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. Bu komu ile sekmelerin durumu belirtilmiştir. ..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ı. Aşağıda verilen çıktıda Activewindow komutu ile çalışılan aktif sayfa belirtilmiştir.

Close End Sub ******************************************************************************************************* Soru5:Çalıştığımız excel sayfasına kayıtlı dosya getirmek ve kayıtlı dosyaları farklı ad ile kaydetmek.Save ActiveWorkbook.(Bu işlem için vba ortamında form oluşturulacaktır) ..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.

. Bu işlem için excel sayfası üzerinde iki adet buton yardımı alınacaktır. Dosya uzantısı mutlaka belirtilmelidir. Soru6:Çalıştığımız excel hücrelerini kilitlemek(korumaya almak). 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.Değilse aynı isimde başka dosyalarda olabilir.. Dikkat edilirse çalıştığımız sayfayı kaydedip kapatmak için activeworkbook komutundan yardım alınmıştır. Kayıtlı dosyayı açmak için ise workbooks komutu kullanılmıştır. kilidi açmak.Kodlar aşağıda verilmiştir.

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. Kullanıcı şifre bilgisini bu Alana girerse sayfa üzerine bilgi girişinde bulunabilir. Set komutu ile sayfa bilgisi hafızada tutulmuştur.. 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. Hafızanın devamlılığı için Dim komutundan yardım alınmıştır. Kullanıcı isterse unprotect satırındaki “123” bilgisini silerse aşağıdki gibi bir görüntü ile karşılaşabilir.

. 2).20 - Cevap Sub Düğme1_Tıklat() For i = 10 To 1 Step -1 Cells(i. Cevap Dikkat edilecek nokta verilerin eşitlik sembolü ile başlamamasıdır. Ayrıca toplam formülü için Đngilizcedeki karşılığı olan sum komutunun kullanılmasıdır.ColorIndex = i Next End Sub Cells(satı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ı. Đnteriror (içermekte) komutu ile hazır renk skalasından yardım alınmıştır. ********************************************************************************************************** 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.sutun) yardımı ile hücrelere rakamlar a10 hücresinden başlama şartı ile a1 hücresine kadar yazılmıştır. 1) = i Cells(i.(a1 hücresi ile a10 hücreleri arasına 1 ile 10 .Interior.

Başka bir buton ile de sayfa temizliği yapılması istenmiş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 ..sutun”) tanımlaması ilede çalışma sayfası temizlenmiştir.21 arasındaki rakamlar ardışık olarak yerleştirilmiştir.) Cevap Çıktıda verildiği gibi set komutu ile active hücreler hafızaya atılmıştır Range(“satır.

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

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

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

2007 yapıyoruz." Exit sub End If MsgBox "Kullanım süresi dolmuştur." ActiveWorkbook.7.Aşağıdaki şekle benzer çıktı ile karşılaşırız.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. Soru16:15.2007 tarihinden daha küçük tarihleri birinci ve ücüncü sutundaki bilgileri ile beraber liste kutusuna aktarıyoruz. Bilgisayarımızın kod ile tarihini 9. On üç satırlık bilgide ikinci sutundaki tarih bilgilerini karşılaştırıyoruz 9..7.Save MsgBox "Kullanım süresi devamediyor. soruya benzer başka bir örnekte belirli bir saati baz alarak işlemlerin durmasını sağlayabiliriz. 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.10.

"k20"). Sub alansınırlandırma_Düğme1_Tıklat() Worksheets("hücre say").Interior.ColorIndex = 7 Cells(i. Excel dosyası açıldığında butona basmaya gerek duyulmadan program otomatik olarak çalışır.i Cells(i.26 Not:eğer soruda Excel açılır açılmaz işlemlerin otomatik yapılması isteniyor ise Sub auto_open() komutu . i) = i Cells(i.Interior. 11 .Sub farklı tarih_Düğme1_Tıklat() komutunun yerine yazılır. i).i). 11 .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.ColorIndex = 6 Next End Sub Sub Düğme2_Tıklat() Range("a1".Clear End Sub .i) = 11 . Soru17:Hücre alanlarını sınırlandırmak istersek aşağıdaki formülü kullanmamız yeterlidir..

Interior.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.. 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 .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. Dögü her iki türlüde yaılabilir.

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. Sub Dim Dim i = Düğme1_Tıklat() i As Integer k As Integer 2 .Cells(i. 1) = Range("a20") Then 'gerçek şart satırı ile şarta uyan veri olup olmadığının kontrolü yapılmaktadır.. 1. 1) = "" Then Exit Do Satırı programın can damarıdır. j) > 50 Then Worksheets("Sayfa2"). If Sayfa1.Cells(i. j) = Cells(i. j) > "e" Then Worksheets("Sayfa2").Cells(i.28 - Sub Düğme1_Tıklat() For i = 1 To 100 For j = 1 To 100 If Cells(i. If Sayfa1. j) = Cells(i. 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.sutundaki verilerin boş olup olmadığının kontrolü yapılmaktadır.

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.Copy Sayfa1.Üretimdeki personel 500.Range("a2" & k. diğer personel ise çalışma bölümüne göre ücret alacaktır.Range("a" & i.29 k = 3 'Range("a1").PasteSpecial Sayfa3.AutoFilter 'veri süzü uygula Do If Sayfa1. depo personeli 450.Kıdemler için kişiler 8 yıldan az çalışanlar 400 ytl ücret alacaktır.Range("a3"). . "e2" & k). Kıdem teminatı ve maaş hesaplanacaktır. 1) = Range("a20") Then 'gerçek şart k = k + 1 Sayfa1.satış personeli 550 ytl ücret alacaktır..Cells(i. 1) = "" Then Exit Do If Sayfa1.Cells(i. "e" & i).

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

31 - ..

Sign up to vote on this title
UsefulNot useful