Professional Documents
Culture Documents
Bilgisayar Yazılım Uygulamaları Ders Notları
Bilgisayar Yazılım Uygulamaları Ders Notları
DERS NOTU
1
1.BİLGİSAYAR PROGRAMI
Bir problemin bilgisayar ortamında çözümü hatasız ve etkin bir bilgisayar programı ile
gerçekleştirilebilmektedir. Problemin bilgisayar ortamında çözümünde aşağıdaki aşamalardan
geçilmelidir.
Problemin çözümüne yardımcı olacak girdilerin, bu girdiler ile yapılacak işlemlerin ve bu işlemler
sonucunda elde edilecek çıktıların belirlenmesi aşamalarından oluşmaktadır.
Problemin çözümü için oluşturulacak bilgisayar programının akış diyagramının çizilmesi aşamasıdır.
Bilgisayar programında değişik koşullara bağlı olarak yapılacak işlemleri ve program akışını gösteren
diyagrama akış diyagramı (Flowcharts) adı verilmektedir. Bu diyagramlarda programlama diline
bağlı olarak, program kapsamında geçekleştirilecek olan işlemleri temsil eden temel şekiller
kullanılmaktadır.
Bir akış diyagramı dolayısıyla bilgisayar programı, Girdiler, İşlemler ve Çıktılar olmak üzere üç ana
kısımdan oluşmaktadır.
BAŞLA
GİRDİLER
İŞLEMLER
ÇIKTILAR
DUR
2
Akış diyagramı ile program kapsamında yapılacak işler ve gidiş yolu (akışı) ayrıntılı ve açık bir
şekilde ortaya konulmaktadır. Böylece programın yazılımı, kontrolü ve hatalarından
arındırılması kolaylaşmaktadır. Akış diyagramları bir nevi bilgisayar programın planıdır. Bu
plana göre bilgisayar programı oluşturulmaktadır.
Bu aşama kod yazma ve programı çalıştırma aşamasıdır. Çizilen akış diyagramı dikkate
alınarak, işlemleri gerçekleştirecek olan programlama diline ait kodlar belirlenir. Akış
diyagramındaki program akışına bağlı olarak bu kodlar yazılır ve programlama aşaması
tamamlanır. Program değişik koşullar için çalıştırılır ve çıktılar kontrol edilir. Eğer hata
bulunursa program yeniden gözden geçirilerek hata ayıklama işlemi yapılır.
BAŞLA
Başla-Start- Run (Program başı; Program bu simgeyle başlar)
DUR
Stop-Dur-Son (Program Sonu; Program bu simgeyle sona erer.)
GİRİŞ
Giriş (Program girdilerinin yazıldığı simge)
İŞLEM
İşlem ( Değişkene atama işlemi yada herhangi bir işlemi gösteren
simge)
E
Koşul
H
Koşul ( Mantıksal karşılaştırma veya karar simgesi)
MS Excel programı uygulama yazılımlarından biri olan elektronik hesap tablosu yazılımları
içerisinde incelenmektedir. MS Excel, aritmetik işlemlerin ve mantıksal karşılaştırmaların
yapılmasına, değişik türdeki grafiklerin ve tabloların oluşturulmasına, veri çözümleme
işlemlerinin gerçekleştirilmesine, makro programların yazılmasına olanak sağlayan ve çeşitli
gelişmiş fonksiyonlara (Tarih ve Saat, Matematik ve Trigonometri, İstatistiksel, Arama ve
Başvuru, Veritabanı, Metin, Mantıksal, Bilgi, Mühendislik, Küp) sahip bir programdır.
MS Excel, MS Office toplu program listesi içerisinde yer alan bir programdır. MS Excel
programı, Başlat→ Tüm Programlar→ Microsoft Office→ MS Excel 2010 tıklanarak
çalıştırılmaktadır. Bunun dışında başlat menüsündeki program listesine aktarılarak yada
masaüstüne kısa yol oluşturularak da MS Excel 2010 programı çalıştırılabilir. MS Excel 2010
programının simgesi olup, dosya uzantısı .xlsx dir. Ms Excel dosyası bir bütün olarak
çalışma kitabı olarak tanımlanmaktadır. Bundan dolayı program çalıştırıldığında dosya adı
Kitap olarak adlandırılmaktadır.
3 4
5,6
7,8
9 10
12,13
11
14
Hücrelere girilen verilerin düzeltilmesi için verinin bulunduğu hücre seçilerek F2 tuşu ile bu
hücredeki veri düzeltilebilir.
6
MS Excel 2010’da seçilen hücrelerin çeşitli özelliklerine göre biçimleri Hücreleri Biçimlendir
penceresi yardımıyla ayarlanmaktadır. Hücreleri Biçimlendir penceresine, seçilen hücreler üzerinde
farenin sağ tuşu tıklanarak ulaşılacağı gibi, Ctrl→1 kısa yol tuşu ile de ulaşılabilir.
Sayı: Bu sekme ile hücrelere girilen verilerin tipleri tanımlanmaktadır. Girilen verilerin tipleri bu
sekmede, tamsayı ya da ondalıklı sayı, finansal, tarih, saat, yüzde oranı, kesir, bilimsel, Metin, Özel
yada isteğe uyarlanmış olarak belirlenebilmektedir. Bu sekmede hiçbir ayarlama yapılmaz ise Genel
biçimli hücreler olarak kalmaktadır.
Hizalama: Bu sekme ile hücreler içerisine girilen verilerin yatay ve dikey yöndeki hizaları ayarlanır.
Girilen verilerin hangi yönde yazılacağı (metin yönü) belirlenir. Seçilen hücreler tek bir hücre olarak
birleştirmeleri hücreleri birleştir komutu ile bu sekme üzerinde gerçekleştirilir.
7
Yazı Tipi: Hücrelere giren verilerin yazı tipleri, yazı tipi stilleri, boyutları, yazı renkleri, ve efektleri
bu sekmeden ayarlanmaktadır.
Koruma: Bu sekmede hücrelerin kilit ayarları yapılmaktadır. Sekme ilk açıldığında kilitli seçeneği
işaretlidir. Gözden geçir sekmesinden Sayfa koruması verildiğinde bu hücrelere hiçbir şekilde
müdahale yapılamayacaktır. Örneğin bir MS Excel tablosu veya makro program oluşturulduğunda
sayfa koruması yapılmadan kullanıcıların veri girebileceği ve biçimlerini değiştirebilecekleri
hücrelerin kilitleri Kilitli seçeneğinin yanındaki seçim kaldırılarak açılması gerekir. Sayfa
korunduktan sonra kilitli seçeneği kaldırılan hücrelerde işlem yapılabilecek diğer hücrelerde hiçbir
şekilde işlem yapılamayacaktır.
9
MS Excel 2010 programında Makro ile ilgili komutlara ve Visual Basic ortamına Şerit (Ribon)
üzerinde bulunan Geliştirici sekmesi yardımıyla ulaşılmaktadır. MS Excel 2010 programı ilk
yüklenip çalıştırıldığında şerit üzerinde geliştirici sekmesi bulunmamaktadır.
MS Excel 2010 programı ilk yüklenip çalıştırıldığında şerit üzerinde geliştirici sekmesi
bulunmamaktadır. Geliştirici sekmesi Dosya→ Seçenekler→ Şeridi Özelleştir seçeneği tıklanır.
Açılan pencerenin sağ tarafında bulunan ana sekmeler içerisindeki Geliştirici sekmesinin yanında
bulunan onay kutusu işaretlenir ve Tamam komut düğmesine tıklanır. Böylece Geliştirici sekmesi
şerit üzerine eklenmiş olacaktır.
10
Bu pencere yardımıyla visual basic ortamında oluşturulan makrolar öncelikle seçilip, Çalıştır komut
düğmesi tıklanarak çalıştırılabilir, Sil komut düğmesi tıklanarak silinebilir ya da Düzenle komut
düğmesi seçilerek visual basic kod sayfası ortamına gidilerek tekrar düzenlenebilir.
11
Bu pencerede makronun adı yazılır, istenirse bu makroyu çalıştıran CTRL→ kısayol tuşu ve
makronun saklanacağı yer belirlenir. Daha sonra Tamam komut düğmesine tıklanarak makro kaydı
başlatılır.
Makro kaydet komutunu bir örnek ile açıklayacak olursak; Geliştirici → Makro Kaydet komutu
seçilir. Açılan pencereden makro adı Bicim Kısayol tuşu Ctrl→Shift→L, Makronun saklanacağı yer
Bu çalışma Kitabı olarak belirleyelim ve Tamam komut düğmesine tıklayalım. Bu aşamadan sonra
kayıt başlamıştır ve Makro Kaydet komutunun yerinde Kaydı Durudur komutu yer alacaktır.
12
Tüm bu işlemler tamamlandıktan sonra Kaydı Durdur komut düğmesine tıklanarak makro kaydı
tamamlanmış olacaktır. Geliştirici→Makrolar→Bicim Makrosu seçilip Çalıştır komut düğmesine
tıklandığında yukarıdaki adımlarda belirtilen tüm işlemler otomatik olarak tek seferde yapılacaktır.
Aşağıdaki ekran görüntüsü elde edilecektir.
13
Bu komut düğmesi ile çalışma sayfası üzerine makro programın ara yüzünü oluşturmak için
gerekli olan çeşitli denetimler görüntülenecektir.
Bu seçeneklerden “Bildirimde bulunarak tüm makroları devre dışı bırak” seçeneği seçilmelidir.
Kullanıcı makro içeren bir MS Excel dosyası açtığında makro devre dışı bırakılacak, kullanıcıya bu
dosyanın makro içerdiği bildirilerek, makroyu etkinleştirip etkinleştirmeyeceği sorulacaktır.
15
Visual Basic ortamında kodlar çalışma sayfalarına ait kod sayfalarına, Modüle sayfalarına ya da
Kullanıcı Formu (User Form) kod sayfalarına yazılmaktadır. Bu kod sayfalarına VBA ortamında
Project – VBA Project (Project Explorer) penceresinden ulaşılmaktadır.
Yukarıdaki şekilden de görüleceği üzere VBA ortamında 3 adet çalışma sayfası 1’er adet Kullanıcı
Formu ve Modüle nesneleri bulunmaktadır. Makro kodu hangi nesnenin kod sayfasına yazılacaksa o
nesne Project – VBA Project (Project Explorer) penceresinden tıklanır. Çalışma sayfalarına ya da
Modüle kod sayfalarına ait kodların yazılmasında bağımsız makro program parçaları kodlanabilir.
Kullanıcı formuna ait kod sayfalarında ise kullanıcı formu ve bu forma ait nesnelerin makro kodları
birlikte yazılmaktadır. Kullanıcı formu kod yazım kuralları daha sonraki bölümlerde işlenecektir.
Makro programının kodları, program girdilerinin alındığı ve program sonunda elde edilecek çıktıların
gönderileceği çalışma sayfasının altına yazılması gerekmektedir. Bu durumda hücre adreslerinin
önüne çalışma sayfalarının adreslerinin yazılmasına gerek olmayacaktır. Eğer bu kod Modüle
sayfasına yazılacaksa o zaman girdilerin alındığı ve çıktıların gönderildiği çalışma sayfasının
adresinin hücre adreslerinin önünde belirtilmesi gerekmektedir.
Bir problemin çözümü için VBA ortamında makro programının oluşturulmasında aşağıdaki aşamalar
takip edilmelidir.
16
Makro programın adının belirlenerek program kod aralığının oluşturulması: Bu aşama kod
yazımının başlangıcıdır. Makro programının kodlarının yazımına Sub deyimi ile başlanır. Bu
deyimden sonra programın adı yazılır ve Enter tuşuna basılarak aşağıdaki görüntü elde edilir.
Sub program_adi( )
Kodlar
End Sub
Böylece kod yazma aralığı da tanımlanmış olur. Diğer kodlar Sub program_adi( )- End Sub aralığına
yazılmaktadır. Program adında Türkçe karakterler ve alt çizgi ( _ ) dışında noktalama işaretleri
kullanılmamalıdır. Program adı harf ve rakamlardan oluşabilir. Fakat rakamlar program adında ilk
karakter olarak kullanılmazlar.
Makro program girdilerinin çalışma sayfasından programa alınması: Program girdileri çalışma
sayfalarındaki hücrelere girilmiş ise bu girdiler hücre adresleri ile programa alınmaktadır. Bu veriler
birbirinden bağımsız hücrelerde bulunacağı gibi belli bir hücre aralığında da bulunabilir. VBA
ortamında yazılan makro programa ait kodlarda hücre adresleri iki şekilde yazılmaktadır. Örneğin C5
hücresinin makro program kodu içerisindeki adresi Cells(5,3) yada Range(“C5”) dir. Cells deyiminde
parantez içerisinde ilk önce hücrenin kaçıncı satırda olduğunu belirten satır numarası araya virgül
konarak hücrenin kaçıncı sütunda olduğunu gösteren sütun numarası yazılır. C5 hücresi 5. Satır,
3.Sütunda bulunduğu için adresi Cells(5,3) olmaktadır.
Sub toplama ( )
x=Cells(1,1)
y=Cells(1,2)
z=x+y
End Sub
17
olarak elde edilmektedir. Kodlardan da dikkat edileceği üzere girdiler programa alınırken öncelikle
Değişken adı =Hücre adresi şeklinde tanımlama yapılmalıdır. Değişken ataması yapılmasaydı bu
durumda program kodu;
Sub toplama ( )
z= Cells(1,1) + Cells(1,2)
End Sub
olmaktadır. Komut yapılarında da görüleceği üzere değişken atamadan yapılan program kodları daha
az satıra sahip olmaktadır. Ancak özellikle kapsamlı programların yazımında işlemler aşamasında
komutların anlaşılması zorlaşacaktır. Bundan dolayı mutlaka girdiler bir değişkene atanarak
kullanılmalıdır.
Makro programının yerine getireceği işlemlerin belirlenmesi: İşlemler aşaması programın akışına
göre aritmetik işlemler, mantıksal karşılaştırmalar (karar yapıları) ve döngü yapılarından
oluşmaktadır.
Sub toplama ( )
x=Cells(1,1)
y=Cells(1,2)
z=x+y
Cells(1,3)=z
End Sub
olarak elde edilmektedir. Kodlardan da dikkat edileceği üzere çıktılar çalışma sayfasına yazdırılırken,
girdilerin tersi olarak öncelikle Hücre adresi=Değişken adı şeklinde tanımlama yapılmalıdır.
Değişken ataması yapılmasaydı bu durumda program kodu;
Sub toplama ( )
Cells(1,3)= Cells(1,1) + Cells(1,2)
End Sub
olmaktadır. Komut yapılarında da görüleceği üzere değişken atamadan yapılan program kodları daha
az satıra sahip olmaktadır. Ancak özellikle kapsamlı programların yazımında işlemler aşamasında
komutların anlaşılması zorlaşacaktır. Bundan dolayı mutlaka çıktılarda, girdilerde olduğu gibi bir
değişkene atanmalıdır.
18
Yukarıdaki şekilden de görüleceği üzere Sayfa1 çalışma sayfasına ait kod sayfasında toplam 4 adet
makro program rutini oluşturulmuştur. Bu makro programlar aynı zamanda kod sayfasının sağ üst
köşesinde bulunan açılır pencerede listelenmektedir. Hangi makro program üzerinde çalışılacaksa bu
pencerede o makro programın adının üzerine tıklanarak o makro programın rutinine ulaşılabilir.
Çalışma sayfasına veya Modüle sayfasına ait kod sayfasındaki makro programların tümünde geçerli
olabilen ve değeri programlara göre değişmeyen değerlere Sabit (Constant) adı verilmektedir.
Sabitler kod sayfasının sağ üst köşesinde bulunan Declaration kısmı tıklanarak ulaşılan General
Declaration bölümünde Const deyimi ile tanımlanmaktadır.
Yukarıdaki şekilden de görüleceği üzere General Declaration kısmında Const x=25 olarak
tanımlama yapılmıştır. Bu çalışma sayfasına ait kod sayfasına yazılan tüm makro programlarda artık
x değişkeni kullanılması durumunda değeri 25 olarak kabul edilecektir.
VBA ortamında oluşturulan makro programlarda, verilerinin saklandığı, ismi ve barındırdığı bir veri
tipi olan nesnelere değişken adı verilmektedir. VBA makro kodlarında değişken tanımlaması
aşağıdaki şekilde yapılmaktadır.
X1 (Doğru) 1X (Yanlış)
Stl_Hacm (Doğru) Stl:Hacm (Yanlış)
Ad_Soyad (Doğru) Ad Soyad (Yanlış)
String: Bu veri tipi ile metin türünde sayısal olmayan veriler tanımlanmaktadır.
Boolean: Bu veri tipi ile mantıksal veriler tanımlanmaktadır. Bu veriler Doğru (True) ya da Yanlış
(False) değerlere sahiptir. Örneğin cinsiyet mantıksal bir veri türüdür. İki değere sahiptir. Erkek ise
True Kadın ise False ya da bu durumun tam tersi olabilecektir.
Integer: Kısa tamsayıları tanımlamak için kullanılan veri tipidir. Değer aralığı -32768 ile 32767
arasındadır.
Long: Uzun tamsayıları tanımlamak için kullanılan veri tipidir. Değer aralığı -2.147.483.648 ile
+2.147.483.647 arasındadır.
̅ 1.401298*10-45 ve
Single: Ondalıklı sayıların tanımlanması için kullanılır. Değer aralığı +
̅ 3.402823*1038 arasındadır.
+
Double: En uzun ondalıklı sayıları tanımlayan bir veri tipidir. Değer aralığı
̅ 1.79769313486232*10308 ile +
+ ̅ 4.94065645841247*10-324 arasındadır.
Variant: Değişkene eğer bir veri tipi tanımlanmamış ise o zaman değişken bu veri tipi ile
tanımlanmaktadır. Bilgisayar hafızasında en fazla yeri kaplayan bir veri tipidir.
Örneğin bir orman işletmesinde çalışan yangın işçilere ait bilgilerin saklanacağı bir VBA makro
programı oluşturulsun. Bu programdaki değişkenler aşağıdaki gibi tanımlanmalıdır.
VBA ortamında hazırlanan makro programların işlemler aşamasını oluşturan unsurlardan biriside
mantıksal karşılaştırmalardır. Mantıksal karşılaştırmaları sağlayan çeşitli karar yapıları mevcuttur.
Bu bölümde karar yapıları ve özellikleri açıklanarak bunlarla ilgili çeşitli örneklere yer verilmiştir.
If Koşul Then
.
.
.
Else
.
.
.
End If
Bu karar yapısı bir koşula bağlı olarak oluşan iki farklı durum için kullanılmaktadır. If deyiminden
sonra yazılan koşul sağlanmış ise Then komutundan sonra yazılan ifadeler icra edilecektir. Eğer bu
koşul sağlanmamış ise bu durumda Else ifadesinden sonra gelen ifadeler icra edilecektir.
Örnek 1:
Bir öğrencinin ara sınav ve final notuna göre geçme notunu hesaplayan ve daha sonra geçme notuna
göre geçme durumunu belirleyen MS Excel VBA makro programını oluşturunuz.
(Geçme Notu: Ara Sınav Notu*0,40 + Final Notu*0,60 olarak hesaplanacak, Geçme Durumu: geçme
notu 50 ve daha yüksek ise öğrenci geçecek, aksi takdirde kalacaktır.)
22
Çözüm 1:
Yukarıdaki çalışma sayfasında 601970087 no’lu öğrencinin ara sınav notu B2 hücresine, Final Notu
ise C2 Hücresine girilmiştir. Program sonucunda elde edilen geçme notu D2 hücresine, geçme
durumu ise E2 hücresine yazdırılacaktır. Bu durumda programın aşamaları aşağıdaki gibi olacaktır.
Girdiler: Ara sınav notu ve final notu olmaktadır. Ara sınav notu: asn ve final notu: fn isimli
değişkenlere atanmıştır.
İşlemler: Geçme Notu: Ara Sınav Notu*0,40 + Final Notu *0,60 ve Geçme Notu >= 50 olması
durumunda öğrencinin Geçme Durumu “Geçti”, bu şartın sağlanmaması durumunda öğrencinin
Geçme Durumu “Kaldı” olacaktır.
Çıktılar: Geçme Notu ve Geçme Durumu programın çıktıları olmaktadır. Geçme Notu: gn, Geçme
Durumu: gd isimli değişkenlere atanmıştır. Programın Akış diyagramı ve VBA Makro kodu
aşağıdaki gibi olmaktadır.
Sub gecme()
asn = Cells(2, 2)
fn = Cells(2, 3)
gn = asn * 0.4 + fn * 0.6
If gn >= 50 Then
gd = "Geçti"
Else
gd = "Kaldı"
End If
Cells(2, 4) = gn
Cells(2, 5) = gd
End Sub
23
If gn >= 50 Then
E
Program kodlarını açıklayacak olursak makro programa Sub gecme ( ) deyimi ile başlanmaktadır.
Ara sınav notu B2 hücresinden Cells(2,2) (2. Satır,2.sütun) adresi ile final notu ise C2 hücresinden
Cells(2,3) (2. Satır,3.sütun) adresi ile programa alınmaktadır. Daha sonra geçme notu hesaplanarak
Eğer geçme notu 50 ve daha yüksek ise geçme durumu “Geçti” olarak, eğer bu şart sağlanmıyorsa
geçme durumu “Kaldı” olarak yazdırılmaktadır. Bu örnekte geçme notu 54,8 olarak hesaplanmıştır.
Bu durumda If deyiminden sonra gelen gn>=50 şartı sağlandığı için Then deyiminden sonra gelen
gd=”Geçti” ifadesi icra edilmiştir. Eğer bu şart sağlanmamış olsaydı bu durumda Else ifadesinden
sonra gelen gd=”Kaldı” ifadesi icra edilecekti.
Programın son kısmında hesaplanan geçme notu Cells(2,4) (2. Satır,4.sütun) adresi ile D2 hücresine,
geçme durumu ise Cells(2,5) (2. Satır,5.sütun) adresi ile E2 hücresine yazdırılmaktadır. End Sub
deyimi ile program sonlandırılmaktadır. Programın çalıştırılmasıyla aşağıdaki çalışma sayfası
görüntüsü elde edilecektir.
24
If Koşul1 Then
.
.
ElseIf Koşul1 Then
.
.
ElseIf Koşul2 Then
.
.
ElseIf Koşul n Then
.
.
Else
.
.
End If
Bu karar yapısı n tane koşula bağlı olarak oluşan n+1 farklı durum için kullanılmaktadır. Örneğin 2
adet koşul mevcut ise 3 farklı durum oluşacaktır. If deyiminden sonra yazılan koşul sağlanmış ise
Then komutundan sonra yazılan ifadeler icra edilecektir. Eğer bu koşul sağlanmamış ise bu durumda
ElseIf deyimlerinden sonra gelen koşullara bakılacak eğer bu koşullardan biri sağlanmış ise koşulun
bulunduğu ElseIf deyiminden sonra yazılan ifadeler icra edilecektir.
Eğer ElseIf deyimlerinden sonra gelen koşullar da sağlanmaz ise bu durumda Else deyiminden sonra
gelen ifadeler icra edilecektir.
Örnek 2
Girdiler: Denklemin a,b, c katsayıları programın girdileri olmaktadır. Değişken ismi olarak da
katsayılar aynen (a,b,c) kullanılmıştır.
delta< 0 ise X1=”Reel kök Yok”; X2=”Reel kök yok” sonucuna ulaşılacaktır.
−𝑏
delta=0 ise 𝑋1 = 𝑋2 = 2∗𝑎 olarak denklemin birbirine eşit tek kökü olacaktır.
−𝑏+√𝑑𝑒𝑙𝑡𝑎 −𝑏−√𝑑𝑒𝑙𝑡𝑎
delta> 0 ise 𝑋1 = ; 𝑋2 = olarak denklemin iki farklı kökü mevcuttur.
2∗𝑎 2∗𝑎
BAŞLA
a,b,c
Delta=b2-4*a*c
E X1=-b/(2*a)
Delta=0 X2=-b/(2*a)
−𝑏 + √𝑑𝑒𝑙𝑡𝑎
𝑋1 =
2∗𝑎
−𝑏 − √𝑑𝑒𝑙𝑡𝑎
𝑋2 =
2∗𝑎
X1
X2
DUR
27
Sub denklem()
a = Cells(2, 1)
b = Cells(2, 2)
c = Cells(2, 3)
Delta = b ^ 2 - (4 * a * c)
If Delta < 0 Then
X1 = "Reel kök yok"
X2 = "Reel kök yok"
ElseIf Delta = 0 Then
X1 = -b / (2 * a)
X2 = -b / (2 * a)
Else
X1 = (-b + Sqr(Delta)) / (2 * a)
X2 = (-b - Sqr(Delta)) / (2 * a)
End If
Cells(2, 4) = X1
Cells(2, 5) = X2
End Sub
Program kodlarını açıklayacak olursak makro programa Sub denklem ( ) deyimi ile başlanmaktadır.
a katsayısı A2 hücresinden Cells(2,1) (2. Satır,1.sütun) adresi ile, b katsayısı B2 hücresinden
Cells(2,2) (2. Satır,2.sütun) adresi ile c katsayısı ise C2 hücresinden Cells(2,3) (2. Satır,3.sütun)
adresi ile programa alınmaktadır. Daha sonra delta değeri hesaplanmaktadır. Eğer hesaplanan delta
değeri 0’dan küçükse, If Delta < 0 Then deyiminden sonra gelen ifadeler geçerli olmaktadır. Bu
durumda denklemin reel kökleri bulunmamaktadır. Bu koşul sağlanmamış ise hesaplanan delta
değerinin 0’a eşit olup olmadığına bakılır. Bu koşul sağlanırsa ElseIf delta=0 Then deyiminden sonra
gelen ifadeler geçerli olmaktadır ve denklemin birbirine eşit tek kökü bulunmaktadır. Bu kökler -
b/(2*a) formülü ile hesaplanmaktadır. Yukarıdaki iki koşul sağlanmadığı durumda ise geriye tek bir
durum olan delta>0 kalmaktadır ve Else deyiminden sonra gelen ifadeler geçerli olmaktadır. Bu
−𝑏+√𝑑𝑒𝑙𝑡𝑎 −𝑏−√𝑑𝑒𝑙𝑡𝑎
durumda denklemin iki farklı kökü olacak, kökler 𝑋1 = ; 𝑋2 = formülleriyle
2∗𝑎 2∗𝑎
hesaplanacaktır. Bu örnekte delta>0 büyük olduğundan dolayı Else deyiminden sonra gelen ifadeler
geçerli olmaktadır. Denklemin iki ayrı kökü mevcut olup bu değerler yukarıdaki formül yardımıyla
hesaplanmaktadır. Programın son kısmında hesaplanan denklemin kökleri X1 Cells(2,4) (2.
Satır,4.sütun) adresi ile D2 hücresine, X2 ise Cells(2,5) (2. Satır,5.sütun) adresi ile E2 hücresine
yazdırılmaktadır. End Sub deyimi ile program sonlandırılmaktadır. Programın çalıştırılmasıyla
aşağıdaki çalışma sayfası görüntüsü elde edilecektir.
28
Bu koşul yapısında mantıksal karşılaştırmaya konu olan değişken Selecet Case deyiminden sonra,
koşullar ise Case ifadesinden sonra yazılmaktadır. Mantıksal karşılaştırma Select Case deyiminden
sonra gelen değişkene göre yapılır. Hangi koşul sağlanmışsa bu koşulun altındaki ifadeler icra
edilerek Select Case – End Select bloğundan çıkılır. Örneğin yukarıdaki blokta Koşul 2 sağlanırsa
Case Koşul 2 deyiminin hemen altındaki ifadeler yerine getirilir ve bloktan çıkılır.
BAŞLA
Sub denklem()
a = Cells(2, 1)
a,b,c
b = Cells(2, 2)
c = Cells(2, 3)
Case 0 E X1=-b/(2*a)
Delta=0 X2=-b/(2*a)
Case Is > 0 E
−𝑏 + √𝑑𝑒𝑙𝑡𝑎
𝑋1 =
Delta>0 2∗𝑎
−𝑏 − √𝑑𝑒𝑙𝑡𝑎
𝑋2 =
2∗𝑎
End Select
X1
Cells(2, 4) = x1
X2 Cells(2, 5) = x2
Sub denklem()
a = Cells(2, 1)
b = Cells(2, 2)
c = Cells(2, 3)
Delta = b ^ 2 - (4 * a * c)
Select Case Delta
Case Is < 0
X1 = "Reel kök yok"
X2 = "Reel kök yok"
Case 0
X1 = -b / (2 * a)
X2 = -b / (2 * a)
Case Is > 0
X1 = (-b + Sqr(Delta)) / (2 * a)
X2 = (-b - Sqr(Delta)) / (2 * a)
End Select
Cells(2, 4) = X1
Cells(2, 5) = X2
End Sub
Program kodlarını açıklayacak olursak makro programa Sub denklem ( ) deyimi ile başlanmaktadır.
a katsayısı A2 hücresinden Cells(2,1) (2. Satır,1.sütun) adresi ile, b katsayısı B2 hücresinden
Cells(2,2) (2. Satır,2.sütun) adresi ile c katsayısı ise C2 hücresinden Cells(2,3) (2. Satır,3.sütun)
adresi ile programa alınmaktadır. Daha sonra delta değeri hesaplanmaktadır. Delta değerine göre
mantıksal karşılaştırma yapılacağından dolayı delta Değişkeni Select Case deyiminden sonra
yazılmıştır. Daha sonra Case deyimi ile koşullar ortaya konmuştur. Eğer hesaplanan delta değeri
0’dan küçükse, Case Is<0 deyiminden sonra gelen ifadeler geçerli olmaktadır. Bu durumda
denklemin reel kökleri bulunmamaktadır. Bu koşul sağlanmamış ise hesaplanan delta değerinin 0’a
eşit olup olmadığı Case 0 deyimi ile sorgulanır. Bu koşul sağlanmış ise Case=0 deyiminden sonra
gelen ifadeler geçerli olmaktadır ve denklemin birbirine eşit tek kökü bulunmaktadır. Bu kökler -
b/(2*a) formülü ile hesaplanmaktadır. Yukarıdaki iki koşul sağlanmadığı durumda ise delta>0 olacak
ve Case Is>0 deyiminden sonra gelen ifadeler geçerli olmaktadır. Bu durumda denklemin iki farklı
−𝑏+√𝑑𝑒𝑙𝑡𝑎 −𝑏−√𝑑𝑒𝑙𝑡𝑎
kökü olacak, kökler 𝑋1 = ; 𝑋2 = formülleriyle hesaplanacaktır. Bu örnekte
2∗𝑎 2∗𝑎
delta>0 büyük olduğundan dolayı, Case Is>0 deyiminden sonra gelen ifadeler geçerli olmaktadır.
31
Denklemin iki ayrı kökü mevcut olup bu değerler yukarıdaki formül yardımıyla hesaplanmaktadır.
Programın son kısmında hesaplanan denklemin kökleri X1 Cells(2,4) (2. Satır,4.sütun) adresi ile D2
hücresine, X2 ise Cells(2,5) (2. Satır,5.sütun) adresi ile E2 hücresine yazdırılmaktadır. End Sub
deyimi ile program sonlandırılmaktadır.
VBA makro programlarda kullanılan önemli yapılardan birisi de döngü yapılarıdır. Bu bölümde
döngü yapıları ve özellikleri açıklanarak bunlarla ilgili çeşitli örneklere yer verilmiştir.
… ifadeler
Next Sayaç
Bu yapıda döngüye bir sayaç değişkeni tanımlanmaktadır. Bu sayaç değişkeni, başlangıç değerinden
başlayarak bitiş değerine kadar Step deyiminden sonra verilen artış miktarına bağlı olarak bir döngü
oluşturur. Sayaç değişkeni başlangıç değerinden bitiş değerine kadar aldığı her değer için aradaki
ifadeleri icra ederek Next deyimine gelmekte ve bu işlemi bitiş değerine kadar sürdürerek bir döngü
oluşturmaktadır.
Örnek 3: 1’den N’e kadar olan sayıların toplamını veren bir MS Excel VBA makro programını
oluşturunuz.
İşlemler: 1’den başlayarak N değerine kadar sayaç değeri birer birer artırılarak sayıların toplamını
sağlayacak bir For…..Next döngüsünün oluşturulmasıdır.
Çıktılar: 1’den N’e kadar olan sayıların toplam değeri programın çıktısını oluşturmaktadır. Bu değer
T isimli bir değişkene atanmıştır. Programın Akış diyagramı ve VBA Makro kodu aşağıdaki gibi
olmaktadır.
Sub toplam()
BAŞLA
N = Cells(2, 1)
For i = 1 To N
T=T+i
N Next i
Cells(2, 2) = T
End Sub
i= 1,N,1
T=T+i
DUR
Program kodlarını açıklayacak olursak makro programa Sub toplam ( ) deyimi ile başlanmaktadır. N
sayısı A2 hücresinden Cells(2,1) (2. Satır,1.sütun) adresi ile programa alınmaktadır. Daha sonra i
sayacı ile bir For…..Next döngüsü tanımlanmaktadır. Bu döngüde i sayaç değişkeninin başlangıç
değeri 1 bitiş değeri ise N sayısı olmaktadır. Artış miktarı 1 olduğu için Step 1 deyiminin yazılmasına
gerek yoktur. 1 değerinden başlanarak N sayısına kadar sayıların toplamı T=T+i ifadesi ile
hesaplanmaktadır.
33
T değişkenin değeri program içerisinde tanımlanmadığı için döngü başlangıcında (i=1) girmeden
program tarafından 0 olarak algılanmaktadır. T=T+i ifadesinde eşitliğin solundaki T döngü sonundaki
(yeni) değeri, eşitliğin sağ tarafındaki T ise döngü başındaki (eski) değeri temsil etmektedir. Bu
durumu aşağıdaki tabloya göre açıklanırsa
T Eski T Yeni
i
Değer Değer
1 0 1
2 1 3
3 3 6
4 6 10
. . .
. . .
50 1225 1275
i sayacının ilk değeri 1 olduğunda T değeri 0 olacaktır. T=T+i ifadesine gelindiğinde T’nin yeni
değeri 1 olacaktır. Döngü For deyimine gelecek ve i’nin değeri 2 olacak, T=T+i ifadesine
gelindiğinde bir önceki döngüde T’nin değeri 1 olduğundan dolayı T’nin yeni değeri 3 olacaktır. i
sayaç değeri 50 olduğunda döngü son kez T=T+i ifadesine gelecek ve döngü tamamlanacaktır. Döngü
tamamlandığında elde edilen T değeri 1’den 50’ye kadar olan sayıların toplamı olacaktır.
Programın son kısmında hesaplanan toplam değer Cells(2,2) (2. Satır,2.sütun) adresi ile B2 hücresine
yazdırılmaktadır. End Sub deyimi ile program sonlandırılmaktadır. Programın çalıştırılmasıyla
aşağıdaki çalışma sayfası görüntüsü elde edilecektir.
Örnek 4: Doğu Karadeniz bölgesi içerisinde yer alan bir orman deposunda çeşitli ağaç türlerine ait
yakacak odunlar istiflenerek ster olarak ölçülendirilmektedir. Her ağaç türü için önceden belirlenmiş
ster katsayılarına göre, her ağaç türü için istiflenen yakacak odunların hacimlerini hesaplayan MS
Excel VBA makro programını oluşturunuz. (Ster, 1 m3’lük hacim içerisine istif edilmiş odun miktarı
olup, ster katsayısı bu ster içerisindeki som (saf) odun hacmidir. Böylece istiflerdeki som odun hacmi
=Ster*Ster Katsayısı olmaktadır.)
34
Çözüm 4: Oluşturulacak VBA Makro programı ile ilgili çalışma sayfası aşağıda görüntülenmektedir.
Girdiler: İstif edilen ağaç türü sayısı, Ağaç türleri, Ster miktarları ve ağaç türlerine ait ster
katsayılarıdır. İstif edilen ağaç türü sayısı n değişkenine, ağaç türü, atur değişkenine, ster miktarı
ster değişkenine, kayın ağaç türüne ait ster katsayısı stkkn değişkenine, göknar ağaç türüne ait ster
katsayısı stkg değişkenine, sarıçam ağaç türüne ait ster katsayısı stkcs değişkenine, ladin ağaç türüne
ait ster katsayısı ise stkld değişkenine atanmıştır.
İşlemler: Programda sadece bir ağaç türüne göre hesaplama yapılmayacak n tane ağaç türü için
hesaplama yapılacaktır. Bu durumda bir döngünün oluşturulması gerekmektedir. Programın girdileri
n elemanlı bir dizi halinde çalışma sayfasına girildiği için döngü yardımıyla programa alınacak ve bu
döngü içerisinde mantıksal karşılaştırma yapıları kullanılarak ağaç türüne göre verilen ster
katsayılarına göre hacimler, türe ait ster miktarı ile türe ait ster katsayısı değerlerinin çarpımı olarak
elde edilecektir.
Çıktılar: Programın çıktıları türlere ait hesaplanan hacimler olup bu değerler döngü içerisinde
çalışma sayfasına yazdırılacaktır. Programın Akış diyagramı ve VBA Makro kodu aşağıdaki gibi
olmaktadır.
35
BAŞLA
n,stkkn,stkg,
stkcs,stkld
i= 1,n,1
atur=cells(i+1,1)
ster=cells(i+1,2)
E
atur=”Kayın” Hacm=ster*stkkn
E
atur=”Göknar” Hacm=ster*stkg
E
atur=”Sarıçam” Hacm=ster*stkcs
E
atur=”Ladin” Hacm=ster*stkld
Cells(i+1,3)=Hacm
DUR
36
Sub hacim()
n = Cells(2, 7)
stkkn = Cells(4, 7)
stkg = Cells(5, 7)
stkcs = Cells(6, 7)
stkld = Cells(7, 7)
For i = 1 To n
atur = Cells(i + 1, 1)
ster = Cells(i + 1, 2)
Select Case atur
Case "Kayın"
hacm = ster * stkkn
Case "Göknar"
hacm = ster * stkg
Case "Sarıçam"
hacm = ster * stkcs
Case "Ladin"
hacm = ster * stkld
End Select
Cells(i + 1, 3) = hacm
Next i
End Sub
Program kodlarını açıklayacak olursak makro programa Sub hacim ( ) deyimi ile başlanmaktadır. İstif
sayısı (n) G2 hücresinden Cells(2,7) (2. Satır,7.sütun) adresi ile, kayın ağaç türüne ait ster katsayısı
(stkkn) G4 hücresinden Cells(4,7) (4.satır, 7.sütun) adresi ile, göknar ağaç türüne ait ster katsayısı
(stkg) G5 hücresinden Cells(5,7) (5.satır, 7.sütun) adresi ile, sarıçam ağaç türüne ait ster katsayısı
(stkcs) G6 hücresinden Cells(6,7) (6.satır, 7.sütun) adresi ile, ladin ağaç türüne ait ster katsayısı
(stkld) G7 hücresinden Cells(7,7) (7.satır, 7.sütun) adresi ile programa alınmaktadır. n tane ağaç türü,
ster miktarı ve hesaplanan hacim değeri olduğu için i sayacı ile bir For…..Next döngüsü
tanımlanmıştır. Bu döngüde i sayaç değişkeninin başlangıç değeri 1 bitiş değeri ise n sayısı
olmaktadır. Artış miktarı 1 olduğu için Step 1 deyiminin yazılmasına gerek yoktur. 1 değerinden
başlanarak ağaç türü Cells(i+1,1) adresi ile, ster miktarı ise Cells(i+1,2) adresi ile programa
alınmaktadır. Satır adresinde i+1 yazılmasının nedeni çalışma sayfasında verilerin üzerlerinde bir
başlık satırının bulunmasından dolayıdır. Sütun adresi ağaç türü verileri 1. Sütunda olduğu için 1, ster
miktarı verileri 2. Sütunda bulunmasından dolayı 2 dir.
37
Daha sonra Select Case….End Select yapısıyla mantıksal karşılaştırmalara geçilmektedir. Ster
katsayıları ağaç türlerine göre değiştiğinden Select Case deyiminden sonra ağaç türü değişkeni olan
atur kullanılmaktadır. Case deyimlerine farklı ağaç türleri belirtilerek bu deyimden sonra bu ağaç
türüne ait hacim değeri, ster miktarı ve bu ağaca ait ster katsayısı ile çarpılarak elde edilmektedir. Bu
şekilde farklı ağaç türlerine göre oluşturulan Select Case….End Select bloğu tamamlandıktan sonra
elde n tane ağaç türü için elde edilen hacim değerleri Cells(i+1,3) adresi ile çalışma sayfasına
yazdırılmaktadır. End Sub deyimi ile program sonlandırılmaktadır. Programın çalıştırılmasıyla
aşağıdaki çalışma sayfası görüntüsü elde edilecektir.
Bu örnekte döngü yapısının daha iyi anlaşılması için i sayaç değerine göre değişkenlerin aldığı
değerler aşağıda tablolaştırılmıştır.
Do While Koşul
İfadeler
Loop
Bu döngü yapısı belirli bir koşul altında çalışmaktadır. Do While deyiminden sonra gelen koşul
sağlandığı sürece döngü çalışmaktadır. Koşul sağlanmadığı durumda döngüden çıkılmaktadır.
Örnek 3’deki 1’den N’e kadar olan sayıların toplamını hesaplayan MS Excel VBA makro programı
Do While……Loop döngü yapısı ile de oluşturulabilir. Bu durumda girdiler ve çıktılar aşamaları
Örnek 3’deki gibi olacaktır. Fakat işlemler aşamasında Do While……Loop döngüsüne bir sayaç
değişkeni tanımlanarak bu değişkenin değeri N oluncaya kadar döngü devam ederek sayıların
toplanması sağlanacaktır. Bu döngüye ait akış diyagramı ve VBA makro kodu aşağıdaki gibi
oluşturulacaktır.
BAŞLA
H
i<=N
T=T+i
i=i+1
DUR
39
Sub toplam()
N = Cells(2, 1)
Do While i <= N
T=T+i
i=i+1
Loop
Cells(2, 2) = T
End Sub
Program kodlarını açıklayacak olursak makro programa Sub toplam ( ) deyimi ile başlanmaktadır. N
sayısı A2 hücresinden Cells(2,1) (2. Satır,1.sütun) adresi ile programa alınmaktadır. Döngü
başlangıcında i sayaç değişkenine ve T değişkenine herhangi bir değer atanmadığı için bu
değişkenlerin değeri 0 dır. Do While i<=N deyimi ile i değerinin N değerinden küçük yada eşit olup
olmamasına bakılmaktadır. Döngünün ilk aşamasında i=0 olduğu içi bu şart sağlanmaktadır. Bu
durumda T=T+i ifadesine geçilmektedir. Bu ifade de eşitliğin sağ tarafındaki T ve i değerleri 0
olduğundan dolayı eşitliğin sol tarafındaki T değeri de 0 olacaktır. Daha sonra i=i+1 ifadesine
geçilmekte ve i’nin yeni değeri 1 olmaktadır. Do While i<=N deyime geri dönülür, bu şart yine
sağlanıyorsa T=T+i ifadesine geçilir. Bu ifade de eşitliğin sağ tarafındaki T’nin bir önceki değeri 0
ve i’nin ise yeni değeri 1 olduğu için eşitliğin sol tarafındaki T’nin değeri 1 olacaktır. Bu döngüye
aşağıdaki tabloda olduğu gibi devam edilecektir. i sayaç değeri N sayısına küçük ve eşit olduğunda
yani örneğimizde i=51 olduğunda Do While i<=N deyimi altındaki ifadelere geçilmeden döngüden
çıkılarak döngü tamamlanacaktır.
T Eski T Yeni
i
Değer Değer
0 0 0
1 0 1
2 1 3
3 3 6
4 6 10.
. . .
. . .
50 1225 1275
Döngü tamamlandığında elde edilen T değeri 1’den 50’ye kadar olan sayıların toplamı olacaktır.
Programın son kısmında hesaplanan toplam değer Cells(2,2) (2. Satır,2.sütun) adresi ile B2 hücresine
yazdırılmaktadır. End Sub deyimi ile program sonlandırılmaktadır.
40
VBA ortamında oluşturulan makro kodlarında çeşitli işlemleri yerine getiren fonksiyonlar
kullanılmaktadır. Bu fonksiyonlardan bazıları bu bölümde tanıtılacaktır.
Sqr ( )
Yukarıdaki çalışma sayfasında A2 hücresine x değeri girilmiştir. y değeri ise x değerinin kareköküne
eşit olan bir değişken olması durumunda VBA makro kodu aşağıdaki gibi olacaktır.
Sub karekok()
x = Cells(2, 1)
y = Sqr(x)
Cells(2, 2) = y
End Sub
Program Sub karekök ( ) deyimi ile başlanmaktadır. x değişkeninin değeri A2 hücresinden Cells(2,1)
(2. Satır,1.sütun) adresi ile programa alınmaktadır. Bu değerin karekökü Sqr fonksiyonu ile alınmakta
ve bu değer y değişkenine atanarak B2 hücresine Cells(2,2) (2. Satır,2.sütun) adresine
yazdırılmaktadır.
VBA makro programlama ortamında verilen açı değerine karşılık gelen sinüs değeri Sin fonksiyonu
ile, kosinüs değeri Cos fonksiyonu ile tanjant değeri ise Tan fonksiyonu ile elde edilmektedir. VBA
ortamında açı değeri radyan olarak kabul edilmektedir. Eğer kullanıcı tarafından programa girdi
olarak verilen açı değeri derece cinsinden ise bu değerin radyan cinsine çevrilmesi gerekir.
41
Yukarıdaki çalışma sayfasında A2 hücresine x açı değeri derece cinsinden girilmiştir. y değeri x açı
değerinin sinüsüne eşit olan bir değişken, z değeri x açı değerinin kosinüsüne eşit olan bir değişken,
t değeri x açı değerinin tanjantına eşit olan bir değişken olması durumunda VBA makro kodu
aşağıdaki gibi olacaktır.
Sub trigfonk()
x = Cells(2, 1)
r = (x * 3.14) / 180
y = Sin(r)
Z = Cos(r)
t = Tan(r)
Cells(2, 2) = y
Cells(2, 3) = Z
Cells(2, 4) = t
End Sub
Program Sub trigfonk ( ) deyimi ile başlanmaktadır. x değişkeninin değeri A2 hücresinden Cells(2,1)
(2. Satır,1.sütun) adresi ile programa alınmaktadır. Bu değer derece cinsinden bir değer olduğundan
dolayı r = (x * 3.14) / 180 formülü ile radyana çevrilmekte ve r değişkenine atanmaktadır. Bu r
değişkeninin sinüsü alınarak y değişkenine, kosinüsü alınarak z değişkenine ve tanjantı alınarak t
değişkenine atanmıştır. Daha sonra y değişkeni B2 hücresine Cells(2,2) (2. Satır,2.sütun) adresine, z
değişkeni C2 hücresine Cells(2,3) (2. Satır,3.sütun) adresine ve t değişkeni de D2 hücresine Cells(2,4)
(2. Satır,4.sütun) adresine yazdırılmaktadır.
Bu fonksiyonla ondalıklı sayının virgülden sonraki ondalık kısmı istenilen sayıda basamağa
yuvarlanır.
Yukarıdaki sayının virgülden sonraki basamak sayısı 8 dir. Round fonksiyonu bu sayının ondalık
kısmı 3 basamağa yuvarlanmakta 134,329 olmaktadır. Bu örnekte 3 basamağa yuvarlama istenildiği
için 4. Basamağa bakılmakta bu değer 5’den büyük olduğu için üçüncü basamaktaki 8 sayısı 9’a
yuvarlanmaktadır.
42
Yukarıdaki sayının virgülden sonraki basamak sayısı 6 dır. Round fonksiyonu bu sayının ondalık
kısmı 2 basamağa yuvarlanmakta 152,92 olmaktadır. Bu örnekte 2 basamağa yuvarlama istenildiği
için 3. Basamağa bakılmakta bu değer 5’den küçük olduğu için ikinci basamaktaki 2 sayısı aynen
kalmaktadır.
Sgn ( )
Matematikte kullanılan işaret fonksiyonudur. Parantez içerisine yazılan değer 0’dan küçük ise bu
fonksiyonun değeri -1, 0’a eşit ise fonksiyonun değeri 0 ve 0’dan büyük ise fonksiyonun değeri 1
olmaktadır.
x<0 Sgn(x)=-1
x=0 Sgn(x)=0
x>0 Sgn(x)=1
Exp ( )
Rnd ( )
0 ile 1 arasında rasgele sayı türetmek için kullanılan bir fonksiyondur. Bu fonksiyona örnek olarak
aşağıdaki makro programı oluşturulmuştur.
Sub rasgele()
x = Rnd()
Cells(1, 1) = x
End Sub
Program Sub rasgele ( ) deyimi ile başlamaktadır. Rnd ( ) fonksiyonu ile üretilen 0 ile 1 arasındaki
sayı x değişkenine atanmaktadır. X değişkeni ise çalışma sayfasının A1 hücresine Cells(1,1) (1.satır,
1.sütun) adresiyle yazdırılmaktadır. Program çalıştırıldığında aşağıdaki görüntü elde edilecektir.
43
Program her çalıştırıldığında fonksiyonunun özelliğine bağlı olarak farklı değerler alacaktır.
Int ( )
Bu fonksiyon ile parantez içerisine yazılan ondalık sayıları tam sayıya çevirmek için kullanılır.
Ondalıklı sayısının virgülden sonraki kısımları atılır ve herhangi bir yuvarlama işlemi yapılmadan
tam sayı kısmı çıktı olarak verilir.
Int(32,6789)= 32
Int(21,45)=21
Abs ( )
Abs(-5)=5
Abs(5)=5
44
Bu bölümde MS Excel çalışma sayfalarına ve MS Excel dosyasının tamamı için geçerli olan çalışma
kitabına ait belirli VBA makro kodları verilecektir. Bu kodlar ile çalışma kitabı ve çalışma sayfası ile
ilgili işlemler gerçekleştirilmektedir.
MS Excel çalışma kitabı içerisinde yer alan herhangi bir çalışma sayfasının seçilmesi için;
Sheets(“Sayfa1”).Select
Worksheets(“Sayfa1”).Select
Komutları kullanılmaktadır. Bu iki komut artasında herhangi bir fark bulunmamaktadır. Bu komutlar
ile Sayfa1 seçilmektedir. Örneğin “Sayfa1” adlı çalışma sayfasının A1 hücresinde bulunan bir değeri,
a isimli bir değişkene atanması ile ilgili VBA makro kodu, VBA ortamında, modül sayfasında yada
Sayfa1’in dışındaki bir çalışma sayfasına ait kod sayfasında yazılırsa bu durumda;
a= Sheets(“Sayfa1”).Cells(1,1)
olarak hücre adresinin başında çalışma sayfasının adresinin belirtilmesi gerekmektedir. Aynı
zamanda bu kod, Select komutu ile;
Sheets(“Sayfa1”).Select
a=Cells(1,1)
olarak da yazılabilmektedir.
2.4.2. Çalışma Kitabına Yeni Bir Çalışma Sayfası Ve Çalışma Kitabının Eklenmesi
Çalışma kitabına yeni bir çalışma sayfası eklemek için veya yeni bir çalışma kitabı (MS Excel
dosyası) açmak için Add komutu kullanılmaktadır
Sub ekleme ( )
Worksheets.Add → (Aktif çalışma kitabına yeni bir çalışma sayfası eklenmektedir.)
Workbooks.Add → (Yeni bir çalışma kitabı (MS Excel dosyası) açılacaktır.)
End sub
yukarıdaki makro program koduyla mevcut çalışma sayfasına yeni bir çalışma sayfası ve yeni bir
çalışma kitabı eklenmektedir.
Bilgisayar ortamında kayıtlı olan bir MS Excel dosyası VBA makro kodu yardımıyla
açılabilmektedir. Örneğin C sürücüsünde bulunan deneme isimli bir klasörün içerisinde Bilgisayar
adında bir MS Excel 2010 çalışma kitabı bulunmaktadır. Bu dosyayı açmak için VBA makro kodu
aşağıdaki şekilde olacaktır.
45
Workbooks.Open Filename:="C:\deneme\Bilgisayar.xlsx"
Üzerinde çalışılan aktif çalışma kitabı (MS Excel dosyası), VBA makro kodu yardımıyla
kaydedilebilmektedir. Aktif çalışma kitabının kaydedilmesi için VBA makro kodu aşağıdaki şekilde
olacaktır.
ActiveWorkbook.Save
Üzerinde çalışılan aktif çalışma kitabı (MS Excel dosyası), VBA makro kodu yardımıyla
kapatılabilmektedir. Aktif çalışma kitabının kapatılabilmesi için VBA makro kodu aşağıdaki şekilde
olacaktır.
ActiveWorkbook.Close
Sub deneme()
Workbooks.Open Filename:="C:\deneme\Bilgisayar.xlsx"
Worksheets.Add
Sheets("Sayfa2").Select
For i = 1 To 100
Cells(i, 1) = i
Next i
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub
Sub deneme ( ) ifadesi ile deneme isimli makro programı başlamaktadır. Workbooks.Open
Filename:="C:\deneme\Bilgisayar.xlsx" kodu ile C sürücüsündeki deneme isimli klasörünün
içerisinde bulunan Bilgisayar isimli MS Excel dosyası açılmaktadır. Worksheets.Add ifadesi ile
açılan çalışma kitabına (MS Excel dosyasına) yeni bir çalışma sayfası eklenmektedir.
Sheets("Sayfa2").Select kodu ile açılan çalışma kitabındaki Sayfa2 adlı çalışma sayfası
seçilmektedir. Daha sonra bu çalışma sayfasında For- Next döngüsü yardımıyla A1:A100 hücreleri
arasına 1’den 100’e kadar sayılar sırayla yazdırılmaktadır. ActiveWorkbook.Save komutu ile aktif
46
WorksheetFunction özelliği ile belirli bir hücre aralığında bulunan sayısal veriler ile ilgili çeşitli
istatistikler kolayca hesaplanabilmektedir. WorksheetFunction özelliği bir çalışma sayfası kodu olup
bu ifadeden sonra yazılan fonksiyona göre değerler hesaplanabilmektedir. WorksheetFunction
özelliğini kullanılarak hesaplanan değerin bir değişkene atanması gerekmektedir. Bu durumda
WorksheetFunction özelliğinin bazı fonksiyonlar için, VBA makro kodu genel yazılımı aşağıdaki
şekilde olmaktadır.
Yukarıda yazılan kodda hesaplanan değer herhangi bir a değişkenine atanmıştır. Hücre aralığı olarak
B1:B20 aralığı verilsin. Bu durumda hücre aralığı Range(“B1:B20”) şeklinde tanımlanmakta ve B1
ile B20 arasındaki hücreler için hesaplama yapılmaktadır. Hücre aralığı olarak, tüm sütun ya da tüm
satır verilebilir. Örneğin; 5. Satırdaki tüm veriler için hesaplama yapılabilmesi için hücre aralığı
Range(“5:5”) olarak verilmelidir. İkinci sütun (B sütunu) için hesaplama yapılabilmesi için hücre
aralığı Range(“B:B”) olarak verilmelidir. Bu bölümde WorksheetFunction özelliği ile birlikte
kullanılan belirli fonksiyonlar tanımlanmaktadır.
Count
Tanımlanan hücre aralığında bulunan sadece sayısal verileri sayar. Örneğin B1:B20 hücre
aralığındaki sayısal verileri saydırmak için VBA makro kodu aşağıdaki şekilde olacaktır.
n = WorksheetFunction.Count(Range("B1:B20"))
B1:B20 aralığında bulunan sadece sayısal veriler sayılacak ve bulunan değer n değişkenine
atanacaktır.
CountA
Tanımlanan hücre aralığındaki tüm verileri sayar. Örneğin B sütunundaki tüm verileri saydırmak için
VBA makro kodu aşağıdaki şekilde olacaktır.
n = WorksheetFunction.CountA(Range("B:B"))
Sum
Tanımlanan hücre aralığındaki tüm sayısal verilerin toplamını verir. Örneğin B1:B20 hücre
aralığındaki tüm sayısal verileri toplamak için VBA makro kodu aşağıdaki şekilde olacaktır.
t = WorksheetFunction.Sum(Range("B1:B20"))
B1:B20 hücre aralığındaki sayısal veriler toplanacak ve bulunan değer t değişkenine atanacaktır.
SumIf
Tanımlanan hücre aralığındaki sayısal verilerin belirlenen bir şarta göre toplamını verir. SumIf
fonksiyonunun Sum fonksiyonundan farkı, belirli bir şarta göre toplama yapmasıdır. Örneğin B1:B20
hücre aralığında, 20’den daha büyük sayısal verileri toplamak için VBA makro kodu aşağıdaki
şekilde olacaktır.
st = WorksheetFunction.SumIf(Range("B1:B20"), ">20")
VBA makro kodunda da görüleceği üzere, hücre aralığından sonra çift tırnak içine koşul
yazılmaktadır. B1:B20 arasındaki 20’den büyük hücrelerin toplamı alınmakta ve bulunan değer st
değişkenine atanmaktadır. Şart olarak değişik şart yapılarını gerçekleştiren mantıksal operatörler
kullanılabilmektedir. Örneğin “<20” 20’den küçük değerlerin, “>= 20” 20 ve daha büyük değerlerin,
“< >20” 20 dışındaki tüm değerlerin toplamı alınmaktadır.
Average
Tanımlanan hücre aralığındaki tüm sayısal verilerin ortalamasını vermektedir. Örneğin B1:B20 hücre
aralığındaki tüm sayısal verilerin ortalamasını almak için VBA makro kodu aşağıdaki şekilde
olacaktır.
ort = WorksheetFunction.Average(Range("B1:B20"))
B1:B20 hücre aralığındaki sayısal verilerin ortalaması alınarak elde edilen değer ort değişkenine
atanacaktır.
AverageIf
Tanımlanan hücre aralığındaki sayısal verilerin belirlenen bir şarta göre ortalamasını verir. AverageIf
fonksiyonunun Average fonksiyonundan farkı, belirli bir şarta göre ortalama almasıdır. Örneğin
B1:B20 hücre aralığındaki, 30’dan küçük sayısal verilerin ortalamasını almak için VBA makro kodu
aşağıdaki şekilde olacaktır.
VBA makro kodunda da görüleceği üzere, hücre aralığından sonra çift tırnak içine koşul
yazılmaktadır. B1:B20 arasındaki 30’dan küçük hücrelerin ortalaması alınmakta ve bulunan değer
orts değişkenine atanmaktadır. Şart olarak değişik şart yapılarını gerçekleştiren mantıksal operatörler
kullanılabilmektedir. Bu fonksiyon da SumIf fonksiyonuna benzer olarak, Örneğin “<20” 20’den
küçük değerlerin, “>= 20” 20 ve daha büyük değerlerin, “< >20” 20 dışındaki tüm değerlerin
ortalaması alınmaktadır.
Max
ma = WorksheetFunction.Max(Range("B1:B20"))
Min
mi = WorksheetFunction.Min(Range("B1:B20"))
Median
Tanımlanan hücre aralığındaki sayısal verilerin medyan değerini vermektedir. Örneğin B1:B20 hücre
aralığındaki medyan değerini belirlemek için VBA makro kodu aşağıdaki şekilde olacaktır.
med = WorksheetFunction.Median(Range("B1:B20"))
B1:B20 hücre aralığındaki sayısal verilerin medyan değeri belirlenerek bu değer med değişkenine
atanacaktır.
49
StDev_S
Tanımlanan hücre aralığındaki sayısal verilerin standart sapma değerini vermektedir. Örneğin
B1:B20 hücre aralığındaki sapmayı belirlemek için VBA makro kodu aşağıdaki şekilde olacaktır.
ssap = WorksheetFunction.StDev_S(Range("B1:B20"))
B1:B20 hücre aralığındaki sayısal verilerin standart sapma değeri belirlenerek bu değer ssap
değişkenine atanacaktır.
Fact
Diğer fonksiyonlardan farklı olarak belirlenen bir hücredeki değerin faktöriyeli hesaplanmaktadır.
Örneğin B1 hücresindeki değerin faktöriyelini almak için VBA makro kodu aşağıdaki şekilde
olacaktır.
f = WorksheetFunction.Fact(Range("B1"))
Bir meşcereden örnek alan alınmış ve bu örnek alan içerisine giren tüm ağaçların göğüs çapları
ölçülmüştür. Ölçülen çap değerleri MS Excel çalışma sayfasında B sütununa girilmiştir. Hücre aralığı
B:B olarak belirlenmiştir. Kullanıcı tarafından kaç adet çap verisinin girileceği önceden bilinmediği
için hücre aralığı B:B verilerek B hücresindeki satır sayısı kadar veri değerlendirmeye alınabilecektir.
WorksheetFunction özelliği kullanılarak hesaplanması istenen her değişken (istatistik) için ayrı bir
makro kodu oluşturulmuş (Sub – End Sub) ve bu makroların her biri MS Excel çalışma sayfasında
ayrı birer komut düğmesine atanmıştır. Program sonucunda hesaplanan değerler (çıktılar) çalışma
sayfası üzerindeki hücrelere yazdırılmaktadır. Programın MS Excel Çalışma sayfası görünümü
aşağıdaki gibidir.
50
WorksheetFunction özelliği kullanılarak hesaplanması istenen her değişken için oluşturulan makro
kodları (Sub – End Sub) aşağıdaki şekildedir. Bu her bir değişken için ayrı ayrı oluşturulan makro
program parçaları, girdiler, çıktılar ve komut düğmeleri “Sayfa1” isimli çalışma sayfasında
olduğundan dolayı, VBA ortamında “Sayfa1” adlı çalışma sayfasına ait kod sayfasına yazılmıştır.
51
n = WorksheetFunction.Count(Range("B:B"))
şeklindeki kod yardımıyla bulunmakta ve elde edilen değer n değişkenine atanmaktadır. Cells(2,
5)=n ifadesi ile hesaplanan n değeri (sayısal veri sayısı) çalışma sayfasında 2. Satır 5. Sütuna
yazdırılmaktadır. Sub Sayi ( ) makrosu çalışma sayfası üzerinde bulunan Veri Sayısı adlı komut
düğmesine atanmıştır. Çalışma sayfasında bu düğme seçilerek (tıklanarak) veri sayısı elde
edilebilmektedir.
t = WorksheetFunction.Sum(Range("B:B"))
şeklindeki kod yardımıyla bulunmakta ve elde edilen değer t değişkenine atanmaktadır. Cells(3,
5)=t ifadesi ile hesaplanan t değeri (toplam değer) çalışma sayfasında 3. Satır 5. Sütuna
yazdırılmaktadır. Sub toplam ( ) makrosu çalışma sayfası üzerinde bulunan Toplam adlı komut
düğmesine atanmıştır. Çalışma sayfasında bu düğme seçilerek (tıklanarak) toplam değer elde
edilebilmektedir.
ort = WorksheetFunction.Average(Range("B:B"))
şeklindeki kod yardımıyla bulunmakta ve elde edilen değer ort değişkenine atanmaktadır. Cells(4,
5)=ort ifadesi ile hesaplanan ort değeri (ortalama değer) çalışma sayfasında 4. Satır 5. Sütuna
yazdırılmaktadır. Sub ortalama ( ) makrosu çalışma sayfası üzerinde bulunan Ortalama adlı komut
düğmesine atanmıştır. Çalışma sayfasında bu düğme seçilerek (tıklanarak) ortalama değer elde
edilebilmektedir.
ma = WorksheetFunction.Max(Range("B:B"))
mi = WorksheetFunction.Min(Range("B:B"))
şeklindeki kod yardımıyla bulunmakta ve elde edilen değer mi değişkenine atanmaktadır. Cells(6,
5)=mi ifadesi ile hesaplanan mi değeri (en küçük değer) çalışma sayfasında 6. Satır 5. Sütuna
yazdırılmaktadır. Sub enkucuk ( ) makrosu çalışma sayfası üzerinde bulunan En Küçük adlı komut
düğmesine atanmıştır. Çalışma sayfasında bu düğme seçilerek (tıklanarak) en küçük değer elde
edilebilmektedir.
ssap = WorksheetFunction.StDev_S(Range("B:B"))
şeklindeki kod yardımıyla bulunmakta ve elde edilen değer ssap değişkenine atanmaktadır.
Cells(7, 5)=ssap ifadesi ile hesaplanan ssap değeri (standart sapma) çalışma sayfasında 7. Satır 5.
Sütuna yazdırılmaktadır. Sub ssapma ( ) makrosu çalışma sayfası üzerinde bulunan Standart Sapma
adlı komut düğmesine atanmıştır. Çalışma sayfasında bu düğme seçilerek (tıklanarak) standart sapma
değeri elde edilebilmektedir.
med = WorksheetFunction.Median(Range("B:B"))
şeklindeki kod yardımıyla bulunmakta ve elde edilen değer med değişkenine atanmaktadır.
Cells(8, 5)=med ifadesi ile hesaplanan med değeri (medyan değeri) çalışma sayfasında 8. Satır 5.
Sütuna yazdırılmaktadır. Sub medyan ( ) makrosu çalışma sayfası üzerinde bulunan Medyan adlı
komut düğmesine atanmıştır. Çalışma sayfasında bu düğme seçilerek (tıklanarak) medyan değeri elde
edilebilmektedir.
MS Excel çalışma sayfası üzerinde bulunan tüm düğmelerin çalıştırılmasından sonra ekran görüntüsü
aşağıdaki şekilde elde edilmektedir.
53
Düğmeler: Mesaj kutusunda yer alması istenen düğmeler tanımlanmaktadır. VBA ortamında en çok
kullanılan mesaj kutusu düğmelerinin, Türkçe adları, VBA kodları ve simgeleri aşağıdaki tabloda
verilmiştir.
İkon: Mesaj kutusunda görüntülenmesi istenen ikonlar tanımlanmaktadır. VBA makro kodunda
ikona ait kod, düğme kodundan sonra + işaretinden sonra yazılmaktadır. VBA ortamında kullanılan
mesaj kutusu ikonlarının, Türkçe adları, VBA kodları ve simgeleri aşağıdaki tabloda verilmiştir.
Değişik düğme ve ikonlardan oluşan mesaj kutusu kodları ve görüntüleri aşağıda verilmiştir.
MsgBox "Birim Fiyatlar Gösterilsin mi?", vbYesNoCancel + vbQuestion, "ORMAN İŞLETME MÜDÜRLÜĞÜ"
55
Yukarıdaki mesaj kutusunda Açıklama olarak “Birim Fiyatlar Gösterilsin mi?" ifadesi yazılmıştır.
Düğme olarak vbYesNoCancel VBA kodu ile Evet, Hayır, İptal düğmeleri yerleştirilmiştir. İkon
olarak vbQuestion VBA kodu ile Soru işareti ikonu kullanılmıştır. Mesaj kutusu pencere başlığı
olarak “ORMAN İŞLETME MÜDÜRLÜĞÜ" ifadesi yazılmıştır.
MsgBox "Hacim Verilerini Kontrol Ediniz.", vbOKCancel + vbCritical, "ORMAN İŞLETME MÜDÜRLÜĞÜ"
Yukarıdaki mesaj kutusunda Açıklama olarak “Hacim Verilerini Kontrol Ediniz." ifadesi
yazılmıştır. Düğme olarak vbOKCancel VBA kodu ile Tamam, İptal düğmeleri yerleştirilmiştir. İkon
olarak vbCritical VBA kodu ile Stop işareti ikonu kullanılmıştır. Mesaj kutusu pencere başlığı olarak
“ORMAN İŞLETME MÜDÜRLÜĞÜ" ifadesi yazılmıştır.
Bir orman işletmesinde satılan tomruk cinslerine ait birim fiyatlar ve satış miktarlarına göre satış
tutarını ve KDV’li satış tutarını hesaplayan VBA makro program oluşturulsun. Bu programa ait MS
Excel çalışma sayfası görünümü aşağıdaki gibi olsun.
56
4 adet tomruk cinsine ait birim fiyatlar ve satış miktarları verilmiş bu verilere göre Tutar=Birim
Fiyat*Satış Miktarı, KDV’li Tutar=Tutar+ (Tutar*0,18) formülleri hesaplanmaktadır. KDV’li tutarın
hesaplanıp hesaplanmayacağı kullanıcının isteğine göre MsgBox fonksiyonu ile belirlenebilmektedir.
Bu işlemleri gerçekleştirilecek Sub Tutar ( ) isimli VBA makro kodu oluşturulmuş ve bu makro
program MS Excel çalışma sayfası üzerinde oluşturulan HESAPLA düğmesine atanmıştır. Bu makro
programa ait kodlar aşağıda verilmiştir.
Sub tutar()
n = WorksheetFunction.Count(Range("B:B"))
For i = 1 To n
bf = Cells(i + 1, 2)
sm = Cells(i + 1, 3)
st = bf * sm
Cells(i + 1, 4) = st
Next i
x = MsgBox("KDV'li Tutarlar Hesaplansın mı?", vbYesNo + vbQuestion, "ORMAN İŞLETME MÜDÜRLÜĞÜ")
If x = 6 Then
For i = 1 To n
bf = Cells(i + 1, 2)
sm = Cells(i + 1, 3)
kst = (bf * sm) + (bf * sm) * 0.18
Cells(i + 1, 5) = kst
Next i
Else
MsgBox "KDV'li Satış tutarı hesaplanmayacak", vbOKOnly + vbExclamation, "ORMAN İŞLETME MÜDÜRLÜĞÜ"
End If
End Sub
57
Makro program kodunu açıklarsak; programa Sub tutar ( ) ifadesi ile başlanmaktadır.
WorksheetFunction.Count(Range("B:B")) deyimi ile hesaplanacak veri sayısı belirlenmektedir.
For - Next döngüsü yardımıyla tomruk cinslerine ait birim fiyatlar ve satış miktarları girdi olarak
alınarak tomruk cinslerine ait tutarlar hesaplanmakta ve ilgili hücrelere yazdırılmaktadır. x =
MsgBox("KDV'li Tutarlar Hesaplansın mı?", vbYesNo + vbQuestion, "ORMAN İŞLETME
MÜDÜRLÜĞÜ") MsgBox fonksiyonu kullanılarak kullanıcıya KDV’li tutarların hesaplanıp
hesaplanmayacağı Evet – Hayır düğmelerinden oluşan mesaj kutusu yardımıyla sorulmaktadır. If x
= 6 Then , Evet düğmesinin değeri 6 olduğu için kullanıcının bu Evet düğmesini seçmesi durumunda
For – Next döngüsüyle KDV’li tutarlar hesaplanıp ilgili yerlere yazdırılmaktadır. Hayır düğmesini
seçmesi durumunda ise Else deyiminden sonra gelen MsgBox "KDV'li Satış tutarı
hesaplanmayacak", vbOKOnly + vbExclamation, "ORMAN İŞLETME MÜDÜRLÜĞÜ"
ifadesiyle mesaj kutusu görüntülenerek, kullanıcıya bilgi verilmekte ve KDV’li tutarlar
hesaplanmamaktadır.
Hayır düğmesinin seçilmesi durumunda ise aşağıdaki ekran görüntüsü elde edilecektir.
Kullanıcıların programa veri girebilmeleri için VBA ortamında veri giriş kutuları (InputBox)
tanımlanabilmektedir. Veri giriş kutusunun genel VBA makro kodu aşağıdaki gibidir.
Varsayılan Değer: Veri giriş kutusu açıldığında kutu içerisinde yer alan ilk değerdir.
59
Örneğin;
Yukarıdaki kodun çalıştırılmasıyla elde edilen ekran görüntüsü aşağıdaki gibi olacaktır.
Programlama aşamasında InputBox fonksiyonu bir değişkene atanmakta ve kullanıcının girdiği değer
doğal olarak bu değişkenin değeri olmaktadır.
Bir öğrencinin vize notu ve final notu girdi olarak alan ve bu notlara göre geçme notunu ve geçme
durumunu veren bir VBA makro programı oluşturulsun. Girdiler (vize notu ve final notu) veri giriş
kutusuyla (InputBox) verilsin, çıktılar ise Mesaj kutusu ile verilsin. Bu durumda VBA makro kodu
aşağıdaki şekilde olacaktır.
Sub öğrenci_Notu()
vn = InputBox("Öğrencinin Vize Notunu giriniz.", "NOT GİRİŞİ", "100")
fn = InputBox("Öğrencinin Final Notunu giriniz.", "NOT GİRİŞİ", "100")
gn = vn * 0.4 + fn * 0.6
MsgBox "Öğrencinin Geçme Notu= " & gn
If gn >= 50 Then
MsgBox "GEÇTİ"
Else
MsgBox "KALDI"
End If
End Sub
60
Program Sub öğrenci_Notu deyimi ile başlamaktadır. InputBox fonksiyonu kullanılarak kullanıcı
tarafından girilen vize notu vn değişkenine, final notu fn değişkenine atanmaktadır. Vize notu ve final
notu ile geçme notu hesaplanmakta ve mesaj kutusuyla kullanıcıya bildirilmektedir. Daha sonra
geçme notu 50 ve yukarısında ise öğrenci geçmekte aksi takdirde kalmaktadır. Öğrencinin geçip ya
da kaldığı da mesaj kutuları yardımıyla kullanıcıya bildirilmektedir. Programın çalıştırılmasıyla
aşağıdaki ekran görüntüleri elde edilmektedir.
,
61
Visual Basic programlama dilinin en önemli özelliklerinden birisi de kullanıcı formları ve kontrol
nesneleridir. MS Excel VBA ortamında da program ara yüzü geliştirmek için kullanıcı formları ve bu
formların tasarlanmasında kullanılan kontrol nesneleri bulunmaktadır. Kullanıcılar, kullanıcı formları
sayesinde, oluşturulan programla etkileşimli bir şekilde veri girişi ve çeşitli işlemleri yapıp program
çıktılarını alabilmektedirler.
Kullanıcı formu eklemek için VBA ekranında Insert/User Form seçilir ve VBA ortamına kullanıcı
formu eklenmiş olacaktır.
Yukarıda şekilden de görüleceği üzere kullanıcı formu eklendiğinde, kullanıcı formunun yanına
Toolbox (Araç Kutusu)’nun geldiği görülmektedir. Araç kutusunun elemanlarına kontrol nesneleri
(Control Object) adı verilmektedir. Bu nesneler, oluşturulacak programın amacına bağlı olarak
seçilerek kullanıcı formu üzerine çizilmek suretiyle form tasarımı tamamlanmaktadır.
Kullanıcı formu (User Form) ve diğer kontrol nesnelerinin (Control Object) ile ilgili özelliklerin
ayarlanması ise Properties penceresinden yapılmaktadır. Eğer VBA ortamında properties pencersi
yok ise View/Properties Window komut düğmeleri seçilmelidir.
Caption: Kullanıcı formunu üzerindeki pencere başlığında yer alması gereken ifade buradan
tanımlanır. Aynı zamanda kontrol nesnelerinin kullanıcı formu üzerindeki isimleri de bu özellik
yardımıyla verilebilir.
Font: Kullanıcı formunda ve kontrol nesnelerinde kullanılacak yazı tipi, stili ve büyüklüğü bu özellik
yardımıyla yaralanmaktadır.
62
Label (Etiket): Kullanıcı formu üzerinde, kullanıcılara bilgi vermek ve aynı zamanda program
çıktılarının gösterilebildiği kontrol nesnesidir.
TextBox (Metin Kutusu): Kullanıcı formu üzerinde, kullanıcıların veri girmesi ve aynı
zamanda program çıktılarının gösterilebildiği kontrol nesnesidir.
CheckBox (Onay Düğmesi) : Kullanıcı formu üzerinde, kullanıcılar tarafından herhangi bir
işlemin yapılıp yapılmayacağının belirlenmesi için kullanılan bir kontrol nesnesidir. Bu kontrol
nesnesi seçildiğinde içine bir tik işareti gelecek ve bu işlemde program sırasında gerçekleştirilecektir.
Frame (Çerçeve): Kullanıcı formu üzerinde, kontrol nesnelerini özellikle seçenek düğmelerini
gruplandırmak için kullanılan kontrol nenesidir.
Ağaçların göğüs çapı, boy ve gövde şekil katsayılarına göre gövde hacmi veren bir makro programı
için bir kullanıcı formu tasarlanmıştır.
VBA ortamına bir kullanıcı formu eklendikten sonra, Properties Windows/ Caption özelliğinin
karşına AĞAÇ HACMİ yazılarak kullanıcı formunun pencere başlığında bu ifadenin görüntülenmesi
sağlanmıştır. Sonraki adımda kullanıcının bilgilendirilmesi, veri girişinin sağlanması, program
çıktısının görüntülenmesi, seçim yapılabilmesi ve onay verilebilmesi için aşağıdaki kontrol nesneleri
kullanıcı formu üzerine taşınmıştır.
Label4→ Caption: Program sonunda hesaplanan değerin bu etiket üzerine yazdırılabilmesi için boş
bırakılmıştır.
TextBox1→ Caption: Göğüs çapı değeri kullanıcı tarafından bu nesneye girileceği için boş
bırakılmıştır.
TextBox2→ Caption: Ağaç boyu değeri kullanıcı tarafından bu nesneye girileceği için boş
bırakılmıştır.
Bu kontrol nesneleri kullanıcı formuna çizildikten sonra form tasarımı aşağıdaki gibi olmaktadır.
64
1 7 8 9
3 10
11
4
12
5
13
6 14
Form tasarımı tamamlandıktan sonra ağaç hacmini hesaplayan VBA makro kodunun yazılmasına
geçilmiştir. Bu kod CommandButton1 komut düğmesinin altına yazılmaktadır. Bu makro kodu
aşağıdaki gibi olmaktadır.
65
Kullanıcı formuna göğüs çapı, boy değerleri girilmiş ve ağaç türü olarak Sarıçam seçilmiş ve onay
kutusu işaretlenmemiş ve bu durumda HESAPLA düğmesine basılarak elde edilen kullanıcı formuna
ait ekran görüntüsü aşağıda verilmiştir.
Onay kutusu işaretlenmediğinden dolayı hacim m3 olarak verilmiştir. Aynı verilerle onay kutusunun
işaretlenmesi durumunda elde edilen kullanıcı formuna ait ekran görüntüsü aşağıda verilmiştir.
67
Korkmaz, M.T., 2001, Visual Basic For Application Makrolar Excel 2000 ile Programlama,
ExcelTim yayınları