Başlıklar ve İçerik
Excel VBA Nedir ve Ne İşe Yarar?
Gelişen teknolojiyle birlikte iş hayatında, eğitimde ve kişisel kullanımda veri işleme ve analiz ihtiyaçları artmaktadır. Microsoft Excel, yaygın olarak kullanılan güçlü bir elektronik tablo uygulamasıdır ve verileri düzenlemenin, analiz etmenin ve görselleştirmenin önemli bir aracıdır. Excel’in temel yetenekleri, kullanıcıların verileri hızlı ve kolay bir şekilde manipüle etmelerine ve çeşitli formüllerle analizler yapmalarına olanak tanır. Ancak, daha karmaşık işlemler için Excel’in sınırlamaları olabilir. İşte burada, Excel VBA’nın önemi devreye girer.
VBA Nedir?
VBA (Visual Basic for Applications), Microsoft tarafından geliştirilmiş bir programlama dilidir ve Office uygulamaları arasında Excel, Word, PowerPoint ve Access gibi birçok uygulamada kullanılabilir.
Excel’de VBA kullanmak, kullanıcıların makrolar ve özel işlevler oluşturmasına ve bu sayede Excel’in yeteneklerini genişletmesine imkan tanır. VBA, özellikle tekrarlayan işlemleri otomatikleştirmek, veri işleme süreçlerini hızlandırmak ve kapsamlı analizler yapmak için oldukça değerlidir.
EN ÇOK KULLANILAN EXCEL VBA KODLARI
İçindekiler Sayfası: Tüm Sayfaların Listesini Çıkararak Bağlantı Verme
Bu kodu kullanarak Excel’de tek tuşla içindekiler sayfası oluşturabilirsiniz. Diyelim ki 20 farklı sayfanız var ve bu sayfalara bir ana ekrandan kolayca gitmek istiyorsunuz. Ana ekranda ilgili sayfalara lbağlantı vermeniz gereken 20 farklı değer olmalı. İşte bu kodu çalıştırarak bir ana ekrana içindekiler sayfası konumlandırabilirsiniz.
Bu kodu uygulamak için;
- Çalışma kitabınızda yeni bir sayfa açın ve adını “data” olarak güncelleyiniz.
- Kodu çalıştırdığınızda data sayfasının A1 hücresinden başlayarak tüm sayfaların isimlerini bağlantılı bir şekilde ortaya koyacaktır.
'Excel içindekiler sayfası
Sub ListSheets()
Dim ws As Worksheet
Dim x As Integer
x = 1
Sheets("data").Range("A:A").Clear
For Each ws In Worksheets
Sheets("data").Cells(x, 1).Select
ActiveSheet.Hyperlinks.Add _
Anchor:=Selection, Address:="", SubAddress:= _
ws.Name & "!A1", TextToDisplay:=ws.Name
x = x + 1
Next ws
End Sub
Excel VBA’de Belli bir Aralıktaki Değerlerden Sayfa Oluşturma
Bu kod ile Excel’de bir hücre aralığında bulunan değerlerden yeni sayfalar oluşturabilirsiniz. Bu kodu uygulamak için;
- Çalışma kitabınızda yeni bir sayfa açın ve adını “data” olarak güncelleyiniz.
- Data sayfasının a1:a10 aralığına istediğiniz değerleri giriniz.
- Kodu çalıştırdığınızda bu değerler dikkate alınarak 10 farklı sayfa oluşacaktır.
Sub YeniSayfalarOlustur()
Dim dataSheet As Worksheet
Dim newSheet As Worksheet
Dim dataRange As Range
Dim cell As Range
' Data sayfasını belirtin
Set dataSheet = ThisWorkbook.Sheets("Data")
' Veri aralığını belirtin (A1:A10 gibi)
Set dataRange = dataSheet.Range("A1:A10")
For Each cell In dataRange
If Not IsEmpty(cell.Value) Then
' Yeni sayfa oluşturun ve adını hücre değerine göre ayarlayın
Set newSheet = ThisWorkbook.Sheets. _
Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
newSheet.Name = cell.Value
End If
Next cell
End Sub
Excel VBA’de Gizli Sayfaların Hepsini Tek Seferde Açmak
Bu kod ile Excelde gizlenmiş sayfaları tek seferde gösterebilirsiniz. Böylece tek tek sayfaları açmak için uğraşanıza gerek kalmaz.
Sub TumGizliSayfalariAc()
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Visible = xlSheetHidden _
Or ws.Visible = xlSheetVeryHidden _
Then ws.Visible = xlSheetVisible
End If
Next ws
End Sub
Excel VBA’de Her Sayfaya Farklı Renk Atama (Gradyan Geçişli)
Bu kod ile Excel’de bulunan tüm sayfalara farklı bir renk atanır. Bu renkler birbirleri ile uyumludur ve gradyan bir geçiş sağlar.
Sub CalismaSayfasiRenklendirmeGradyan()
Dim ws As Worksheet
Dim colorStep As Double
Dim colorRange As Double
colorRange = 255 ' Renk aralığı (0-255)
colorStep = colorRange / (Sheets.Count - 1)
For Each ws In Worksheets
Dim redValue As Integer
Dim greenValue As Integer
Dim blueValue As Integer
redValue = colorStep * (ws.Index - 1)
greenValue = colorRange - redValue
blueValue = 128 ' Sabit bir mavi tonu
ws.Tab.Color = RGB(redValue, greenValue, blueValue)
Next ws
End Sub
Excel VBA – Bir Saniye Bekletme / Durdurma
Bu kod ile Excel’de yapılan iki işlem arasına 1 saniye bekletme ekleyebilirsiniz. Aşağıdaki örnek kodda A1’den A10’a kadar olan hücrelere 1’den 10’a kadar olan rakamları yazacak ve her rakam yazıldığında 1 saniye bekleyecektir:
Sub RakamYazdirma()
For i = 1 To 10
Range("A" & i).Value = i ' Rakamı yaz
Application.Wait (Now + TimeValue("0:00:01")) ' 1 saniye bekle
Next i
End Sub
Excel VBA – Belli Bir Sayfayı PDF Olarak Kaydetme
Excel VBA ile bir sayfayı PDF olarak kaydetmek için bu kod parçacığını kullanabilirsiniz.
Sub SayfayiPdfOlarakKaydet()
Dim ws As Worksheet
Dim dosyaYolu As String
Dim dosyaAdi As String
Dim pdfKaydet As String
' Hangi Sayfanın Çıktısını alak istiyorsunuz?
' PDF olarak kaydetmek istediğiniz sayfayı tanımlayın
Set ws = ThisWorkbook.Sheets("SayfaAdi")
' Nereye Kaydolsun?
' Dosyanın kaydedileceği yolu belirleyin
dosyaYolu = "C:\Users\salih\Downloads\"
' Hangi isimle kayıt olsun?
' Dosyanın adını belirleyin
dosyaAdi = "Dosya Adini buraya giriniz"
pdfKaydet = dosyaYolu & dosyaAdi & ".pdf"
' Sayfayı PDF olarak kaydedin
ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfKaydet
' İşlem tamamlandığında kullanıcıya bilgi verin
MsgBox "Sayfa PDF olarak başarıyla kaydedildi!", vbInformation
End Sub
Excel VBA – Bir Sayfadaki Son Dolu Olan Satırı Bulma / Tespit Etme
Excel VBA ile aktif sayfanın son dolu olan satır sayısını bulmak için bu kodu kullanabilirsiniz.
Sub Last_Row()
Dim ws As Worksheet
Dim lr As Integer
Set ws = ThisWorkbook.ActiveSheet
'Bu kod excel sayfasının en altındaki satırdan başlar ve yukarı çıkarak en son satırı bulur.
lr = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
'Bu kod A1'den başlar ve en son satıra gider
'lr = ws.Range("A1").End(xlDown).Row
MsgBox "Son Satir: " & lr
End Sub
Birden Fazla Sayfayı Tek PDF’te Çıktı Alma
Excel’deki birden fazla sayfayı tek bir PDF olarak dışarı aktarmak isterseniz buradaki kod şablonunu kullanabilirsiniz.
Sub SaveSheetsAsPDF()
' Ekran güncellemelerini kapat
Application.ScreenUpdating = False
' PDF 'in nereye hangi isimle kaydedileceğini belirle
fileName1 = "C:\Users\salih\Downloads\pdf_adini_buraya_giriniz.pdf"
' Çıktı almak istediğiniz sayfa isimlerini buraya yazınız.
Sheets(Array("Sayfa1", "Sayfa2", "Sayfa3")).Select
' PDF Olarak Çıktı Alma
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
fileName:=fileName1, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
' Ekran güncellemelerini aç
Application.ScreenUpdating = True
MsgBox "PDF dosyası başarıyla kaydedildi!"
End Sub
Şablonlarımıza da Göz atmak isterseniz Aşağıdaki linkleri kullanabilirsiniz;