Excel 2007′de Özet tablo oluÅŸturmak

Excel 2007′de Özet tablo oluÅŸturmak için, görsel anlatımdan yararlanabilirsiniz.

Buradan izleyin…

Microsoft Word'ü sekmeli kullanın!


İnternet tarayıcılar sekmelerle birlikte büyük kullanışlılık kazanmıştı. Şimdi bu özellik Microsoft Word'e de eklenebiliyor.


Hücre olayları. Excelde Şifreleme

SelectionChange; hücrede işlem yapılsın veya yapılması başka bir hücreye geçildiğinde meydana gelen olaydır. Kodlar Thisworkbook event'ine yazılacaktır

Excelde çalışma kitabına (workbook) ait tetikleyiciler

Workbook_Activate;

Excel Dosyanızın aktufleştiği zaman otomatik olarak işleyen bir eventtır.

Workbook_SheetChange;

Dosyanızda bulunan sayfalardan herhangi birisinde değişiklik olduğu anda otomatik olarak işleyen yordamdır.

Workbook_BeforeClose

 Dosyanızın kapanmadan hemen önce iÅŸleyen bir olaydır. Ä°ptal veya deÄŸiÅŸiklir iÅŸlemlerini buraya yazacağınız kodla uygulayabilirsiniz. Bu yordamda tanımlanan "cancel"" parametresine "true" deÄŸereni aktararak kapatma iÅŸlemini iptal edebilirsiniz. 
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Kapat As String
Kapat = MsgBox("Kapatmak istediÄŸinizden Eminmisiniz", _
vbYesNo, "KAPAT")
If Kapat = vbNo Then
Cancel = True 'kayıt işlemini iptal et
MsgBox ("Kapatma iÅŸlemi iptal edildi")
Else
MsgBox ("dosyanız kapanıyor")
End If
End Sub

Workbook_BeforePrint

Sayfalarınızı yazıcıya göndermeden hemen önce otomatik olarak işleyen yordamdır.
 
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim yazdir As String
yazdir = MsgBox("Yazdırmak İstediğinizden Eminmisiniz", _
vbYesNo, "Yazdır")
If yazdir = vbNo Then
Cancel = True
MsgBox ("Yazdırma İşlemi İptal Edildi")
Else
MsgBox ("Yazdırma İşlemi Başarı ile Tamamlanmıştır")
End If
End Sub

Workbook_BeforeSave

 Dosyanızı kaydetmeden hemen önce iÅŸleyen bir yordamdır. Burada Cancel parametresine "True" deÄŸerini aktarırsanız kaydetme iÅŸlemi iptal edilecektir.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Kaydet As String
Kaydet = MsgBox("Kaydetmek istediÄŸinizden Eminmisiniz", _
vbYesNo, "KAYDET")
If Kaydet = vbNo Then
Cancel = True 'kayıt işlemini iptal et
MsgBox ("Kayıt işlemi iptal edildi")
Else
MsgBox ("kaydetme İşlemi başarıyla tamamlandı")
End If
End Sub

Workbook_NewSheet;

 Dosyanıza yeni bir sheet sayfa eklediÄŸinz zaman otomatik olarak iÅŸleyen bir yardımdır.
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox ("Dosyanıza yeni bir sayfa eklediniz ")
MsgBox ("Toplam Sayfa Sayınız " _
& Workbooks.Application.Sheets.Count & " Adettir,")
End Sub

Workbook_SheetActivate; 

Dosya içerisinde sayfa değiştirdiğinzde meydana gelen olaydır. Örneği sınamak için sayfa2 ye geçiniz.
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
MsgBox ("Sayfa DeÄŸiÅŸtirdiniz")
End Sub

Workbook_SheetBeforeDoubleClick; 

Hücre içerisine fare ile çift tıklanıldığı zaman meydana gelen olaydır. Örnekte ; Eğer Sayfada 4. sütunsa çift tıklanıldığında imleç hücre içerisine yerleşmez
 
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Target.Column = 4 Then 'ikinci sutunsa
Cancel = True
End If
End Sub

Workbook_SheetBeforeRightClick; 

Sayfa Üzerine Mausun sağ tuşuna tıklanılması durumunda otomatik meydana gelen bir olaydır. Örnekte; Sayfa üzerinde 4. sütunda iken sağ tuşa tıklarsanız Windowsun menüsü açılmayacaktır.
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Target.Column = 4 Then '4. sütunsa
Cancel = True 'menünün açılmasını engelle
End If
End Sub

Workbook_windowResize; 

Sayfanazın boyutlarının değişmesi sonucunda otamatik işleyen yordamdır.
Private Sub Workbook_WindowResize(ByVal Wn As Window)
MsgBox ("Sayfanızın boyutu değişti")
End Sub

Yinelemeli Görevler, Döngüler



Yinelemeli Görevler


Sık sık aynı görevi bir öğe grubu için yapmak gerekir. Bu öğeler, bir aralık içindeki hücreler, bir çalışma kitabındaki çalışma sayfaları ya da Uygulama içindeki çalışma kitapları olabilir.

 Makro kaydedici, döngüleri kaydedemesine karşın, yinelenecek ana görevi kaydetmek için kullanılabilir. Böylece, kaydedilen kodda yapılacak küçük bazı deÄŸiÅŸikliklerle, tek başına bir proje için gereksinim duyulanlara baÄŸlı olarak çeÅŸitli tiplerde döngü yaratılabilir.

Aşağıdaki örneklerde; A sütununda içinde sayılar bulunan bir hücre aralığı olduğu ve programcının hücre değerine bağlı olarak, B sütununda buna karşılık gelen hücrenin rengini değiştirmek istediği kabul edilmiştir.

Önce, tek adımlık hücre artalanı renginin değiştirilmesi işlemi kaydedilir:

(Kaydetmek için; Araçlar menüsünden önce Makro'yu sonra Yeni Makro Kaydet'i tıklatın)

Kaydetme sırasında, Biçim menüsünden Hücreler'i tıklatın. Daha sonra, Desenler sekmesini tıklatın ve bir renk seçin. Bu örnekte Sarı kullanılmıştır (.ColorIndex=6). Kaydı Durdur Araç Çubuğu üstündeki Kaydı Durdur düğmesini kullanarak kaydediciyi durdurun.
Şu anda seçili hücrenin rengi değişecek ve aşağıdaki makro kaydedilmiş olacaktır:

Sub Recorded_Macro()

'

' Macro recorded 30.06.97

'

With Selection.Interior

.ColorIndex = 6

.Pattern = xlSolid

End With

End Sub

Not: Kayıt sırasında bir hücre seçerseniz, makronuzda Range("A3").Select ifadesine benzer bir ifade bulunabilir. Bu satır, makro her çalıştırıldığında Range nesnesi içinde belirtilen hücreyi seçeceğinden, satırı silmek isteyebilirsiniz. İlgili hücrenin ilk olarak seçilmesini istiyorsanız, sözkonusu satırı makro içinde bırakın.

Artık, kodu değiştirmeye başlayabilir ve kaydedilen koda çeşitli döngü yapılarından birini ekleyebiliriz.

For Each...Next Döngüsü


Kaydedilen eylemin uygulanacağı hücre aralıkları biliniyorsa, bir For Each…Next döngüsü kullanılabilir.

Bu örnekte, B sütunundaki hücrenin yalnızca A içindeki hücre 20'den büyükse etkilenmesi istenmektedir. Bunu yapmak için, kaydedilen With ifadesini kapsayacak şekilde bir If ifadesi eklenir. Bu, yalnızca If ifadesindeki koşul doğru olduğunda, rengin değiştirilmesini sağlayacaktır.

Son olarak, karşılık gelen hücre A sütununun bir sağındaki sütuna (sütun B) değiştirilmek istendiği için, kayıtlı kod içindeki Seçim özelliği, hücre nesnesini döngüye almanın (cell_in_loop) Yerleştirme yöntemiyle değiştirilir.

Sonuçta ortaya aşağıdakine benzer bir kod çıkar:

 Sub For_Each_Next_Sample()

'

' Macro recorded 30.06.97

'

For Each cell_in_loop In Range("A1:A5")

If cell_in_loop.Value > 20 Then

With cell_in_loop.Offset(0, 1).Interior

.ColorIndex = 6

.Pattern = xlSolid

End With

End If

Next

End Sub

For…Next Döngüsü


Kodun kaç kez döngüye alınacağı biliniyorsa, bir For..Next döngüsü kullanılabilir. Örnek ele alınırsa, seçili hücreden başlayarak aşağıya doğru yalnızca 10 hücreyi denetlemek isterseniz, değiştirilen kaydedilmiş kod şu şekilde görünür:

 Sub For_Next_Sample()

For Counter = 0 To 9
If Selection.Offset(Counter, 0).Value > 20 Then
With Selection.Offset(Counter, 1).Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End If
Next
End Sub


Kodun verilen herhangi bir aralığa özel olmaması ve her zaman etkin hücrenin altındaki on (sayaç olarak 0-9 arasındaki sayılar) hücre içinde döngüde olması için, burada Seçim nesnesi kullanılmıştır. Sayaç bağımsız değişkeni, döngü içinde her defasında bir artar ve döngü yapısı içinde kullanılabilir. Burada, Seçim'den (geçerli hücreden) itibaren kaç satır yerleştirileceğini gösteren bir Yerleştirme bağımsız değişkeni olarak kullanılmaktadır. Sonuçta, bu makro başlatılır ve etkin hücre A1 olursa, Sayaç bağımsız değişkeninin döngüdeki ilk değeri 0 olacaktır, bu nedenle Selection.Offset(Counter, 0).Value ifadesinde gösterildiği gibi A1'den itibaren 0 satır yerleştirilecektir.

Do…Loop Döngüsü

Özel bir koÅŸul kullanılan döngüyü durdurup durdurmamaya karar vermek için, bir Do…Loop kullanımı uygun olabilir. Bu döngü yapısı, döngü yürütülmeden önce özellikleri ve bağımsız deÄŸiÅŸken koÅŸullarını denetlemenize izin verir. AÅŸağıdaki örnekte, baÅŸvurulan hücrenin satır numarası, Selection.Offset(Counter, 0).Row, 100 deÄŸerini aÅŸana kadar döngü yürütülmeye devam ediyor. Bu, döngü görevi 100.satırın altında daha önce hiç yapılmamışsa faydalı olabilir.
 Sub Do_Loop_Sample() Counter = 0
Do Until Selection.Offset(Counter, 0).Row > 100
If Selection.Offset(Counter, 0).Value > 20 Then
With Selection.Offset(Counter, 1).Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End If
Counter = Counter + 1
Loop
  Not: Üç tane daha kullanılan Do…Loop döngüsü vardır. ÇeÅŸitli formlar, deÄŸiÅŸik durumlarda daha fazla esneklik saÄŸlar.

Bunlar hakkında daha fazla bilgi ve diğer döngü yapıları hakkında daha fazla ayrıntı edinmek için, lütfen Visual Basic Ortamı içindeki Yardım'a giderek, döngüye alma anahtar sözcüğünü kullanarak arama yapın.

Tek tek sayfaların isimlerini mesaj kutusunda gösterir


Sub sayfaismigoster()
‘/, Tek tek sayfaların isimlerini mesaj kutusunda gösterir
Dim isayfasayisi As Integer
Dim isayfa As Integer
isayfasayisi = ActiveWorkbook.Worksheets.Count
For isayfa = 1 To isayfasayisi
Worksheets(isayfa).Activate
MsgBox Worksheets(isayfa).Name
Next isayfa
End Sub