- VBA'da İşlev Prosedürü nedir?
- VBA'da Basit Kullanıcı Tanımlı İşlev Oluşturma
- VBA'da Kullanıcı Tanımlı Bir İşlevin Anatomisi
- VBA'da Kullanıcı Tanımlı Bir İşlevdeki Argümanlar
- Dizi Döndüren Bir İşlev Oluşturma
- Excel'de Kullanıcı Tanımlı Bir İşlevin Kapsamını Anlama
- Excel'de Kullanıcı Tanımlı Bir İşlev Kullanmanın Farklı Yolları
- Çıkış İşlev Bildirimi VBA'yı Kullanma
- Kullanıcı Tanımlı Bir İşlevde Hata Ayıklama
- Excel Dahili İşlevler Vs. VBA Kullanıcı Tanımlı İşlev
- Kullanıcı Tanımlı Bir İşlev için VBA Kodunun nereye yerleştirileceği
VBA ile, tıpkı normal işlevler gibi çalışma sayfalarında kullanılabilecek özel bir İşlev (Kullanıcı Tanımlı İşlev olarak da adlandırılır) oluşturabilirsiniz.
Bunlar, mevcut Excel işlevleri yeterli olmadığında yardımcı olur. Bu gibi durumlarda, özel ihtiyaçlarınızı karşılamak için kendi özel Kullanıcı Tanımlı İşlevinizi (UDF) oluşturabilirsiniz.
Bu eğitimde, VBA'da özel işlevler oluşturma ve kullanma hakkında her şeyi ele alacağım.
VBA'yı kolay yoldan öğrenmekle ilgileniyorsanız, Çevrimiçi Excel VBA Eğitimi.
VBA'da İşlev Prosedürü nedir?
İşlev prosedürü, hesaplamalar yapan ve bir değer (veya bir dizi değer) döndüren bir VBA kodudur.
Bir İşlev prosedürü kullanarak, çalışma sayfasında kullanabileceğiniz bir işlev oluşturabilirsiniz (tıpkı TOPLA veya DÜŞEYARA gibi herhangi bir normal Excel işlevi gibi).
VBA kullanarak bir İşlev prosedürü oluşturduğunuzda, bunu üç şekilde kullanabilirsiniz:
- Çalışma sayfasında, girdi olarak bağımsız değişkenleri alabileceği ve bir değer veya değerler dizisi döndürebileceği bir formül olarak.
- VBA alt program kodunuzun veya başka bir İşlev kodunun bir parçası olarak.
- Koşullu Biçimlendirmede.
Çalışma sayfasında halihazırda 450'den fazla yerleşik Excel işlevi mevcut olsa da, aşağıdaki durumlarda özel bir işleve ihtiyacınız olabilir:
- Dahili işlevler yapmak istediğiniz şeyi yapamaz. Bu durumda, gereksinimlerinize göre özel bir işlev oluşturabilirsiniz.
- Dahili işlevler işi halledebilir ancak formül uzun ve karmaşıktır. Bu durumda, okunması ve kullanılması kolay özel bir işlev oluşturabilirsiniz.
İşlev Vs. VBA'da alt program
Bir "Alt Yordam", bir "İşlev" bir değer (veya bir değer dizisi) döndürürken bir dizi kod yürütmenize olanak tanır.
Size bir örnek vermek gerekirse, bir sayı listeniz varsa (hem pozitif hem de negatif) ve negatif sayıları tanımlamak istiyorsanız, bir fonksiyon ve bir alt programla yapabilecekleriniz burada.
Bir alt yordam, aralıktaki her hücrede döngü yapabilir ve içinde negatif bir değere sahip tüm hücreleri vurgulayabilir. Bu durumda, alt program, aralık nesnesinin özelliklerini değiştirir (hücrelerin rengini değiştirerek).
Özel bir işlevle, onu ayrı bir sütunda kullanabilirsiniz ve bir hücredeki değer negatifse DOĞRU, pozitifse YANLIŞ döndürebilir. Bir fonksiyon ile nesnenin özelliklerini değiştiremezsiniz. Bu, hücrenin rengini bir işlevin kendisiyle değiştiremeyeceğiniz anlamına gelir (ancak bunu özel işlevle koşullu biçimlendirme kullanarak yapabilirsiniz).
VBA kullanarak bir Kullanıcı Tanımlı İşlev (UDF) oluşturduğunuzda, bu işlevi diğer işlevler gibi çalışma sayfasında kullanabilirsiniz. Bu konuyu 'Excel'de Kullanıcı Tanımlı Bir İşlev Kullanmanın Farklı Yolları' bölümünde ele alacağım.
VBA'da Basit Kullanıcı Tanımlı İşlev Oluşturma
VBA'da basit bir kullanıcı tanımlı işlev oluşturayım ve nasıl çalıştığını size göstereyim.
Aşağıdaki kod, sayısal bölümleri bir alfasayısal dizeden çıkaracak bir işlev oluşturur.
İşlev GetNumeric(CellRef As String) as Long Dim StringLength As Integer StringLength = Len(CellRef) For i = 1 To StringLength If IsNumeric(Mid(CellRef, i, 1)) Then Result = Result & Mid(CellRef, i, 1) Sonraki i GetNumeric = Sonuç Bitiş Fonksiyonu
Modülde yukarıdaki koda sahip olduğunuzda, çalışma kitabında bu işlevi kullanabilirsiniz.
Aşağıda bu işlevin nasıl - GetNumeric - Excel'de kullanılabilir.
Şimdi size bu fonksiyonun VBA'da nasıl oluşturulduğunu ve nasıl çalıştığını anlatmadan önce bilmeniz gereken birkaç şey var:
- VBA'da bir işlev oluşturduğunuzda, diğer normal işlevler gibi tüm çalışma kitabında kullanılabilir hale gelir.
- İşlev adını ve ardından eşittir işaretini yazdığınızda, Excel size eşleşen işlevler listesinde işlevin adını gösterecektir. Yukarıdaki örnekte, =Al yazdığımda, Excel bana özel işlevimi içeren bir liste gösterdi.
Excel'de kullanımı basit bir işlev oluşturmak için VBA'yı kullanabileceğiniz zaman bunun iyi bir örnek olduğuna inanıyorum. Aynı şeyi bir formülle de yapabilirsiniz (bu eğitimde gösterildiği gibi), ancak bu karmaşık ve anlaşılması zor hale gelir. Bu UDF ile sadece bir argüman iletmeniz yeterlidir ve sonucu alırsınız.
VBA'da Kullanıcı Tanımlı Bir İşlevin Anatomisi
Yukarıdaki bölümde size kodu verdim ve bir çalışma sayfasında UDF fonksiyonunun nasıl çalıştığını gösterdim.
Şimdi derinlere dalalım ve bu fonksiyonun nasıl oluşturulduğunu görelim. Aşağıdaki kodu VB Editöründe bir modüle yerleştirmeniz gerekiyor. Bu konuyu - 'Kullanıcı Tanımlı Bir İşlev için VBA Kodunun nereye yerleştirileceği' bölümünde ele alıyorum.
İşlev GetNumeric(CellRef As String) as Long ' Bu işlev, dizeden sayısal kısmı çıkarır Dim StringLength As Integer StringLength = Len(CellRef) For i = 1 To StringLength If IsNumeric(Mid(CellRef, i, 1)) Sonra Sonuç = Result & Mid(CellRef, i, 1) Sonraki i GetNumeric = Sonuç Bitiş Fonksiyonu
Kodun ilk satırı - İşlev kelimesiyle başlar.
Bu kelime VBA'ya kodumuzun bir fonksiyon olduğunu (ve bir alt program olmadığını) söyler. İşlev sözcüğünden sonra işlevin adı gelir - GetNumeric. Bu işlevi kullanmak için çalışma sayfasında kullanacağımız isim budur.
- Fonksiyonun adında boşluk olamaz. Ayrıca, bir hücre başvurusunun adıyla çakışan bir işlevi adlandıramazsınız. Örneğin, Excel çalışma sayfasındaki bir hücreye atıfta bulunduğu için ABC123 işlevini adlandıramazsınız.
- İşlevinize, mevcut bir işlevin adıyla aynı adı vermemelisiniz. Bunu yaparsanız, Excel yerleşik işlevi tercih eder.
- Kelimeleri ayırmak istiyorsanız alt çizgi kullanabilirsiniz. Örneğin, Get_Numeric kabul edilebilir bir addır.
İşlev adının ardından parantez içinde bazı argümanlar gelir. Bunlar, fonksiyonumuzun kullanıcıdan ihtiyaç duyacağı argümanlardır. Bunlar, Excel'in yerleşik işlevlerine sağlamamız gereken argümanlar gibidir. Örneğin bir EĞERSAY işlevinde iki argüman vardır (aralık ve ölçüt)
Parantez içinde argümanları belirtmeniz gerekir.
Örneğimizde yalnızca bir argüman var - CellRef.
Fonksiyonun ne tür bir argüman beklediğini belirtmek de iyi bir uygulamadır. Bu örnekte, fonksiyona bir hücre referansı besleyeceğimiz için, argümanı 'Range' tipinde belirtebiliriz. Bir veri türü belirtmezseniz, VBA bunu bir değişken olarak kabul eder (bu, herhangi bir veri türünü kullanabileceğiniz anlamına gelir).
Birden fazla argümanınız varsa, bunları aynı parantez içinde virgülle ayırarak belirtebilirsiniz. Bu öğreticide daha sonra kullanıcı tanımlı bir işlevde birden çok bağımsız değişkenin nasıl kullanılacağını göreceğiz.
İşlevin 'Dize' veri türü olarak belirtildiğine dikkat edin. Bu, VBA'ya formülün sonucunun String veri türünde olacağını söyler.
Burada sayısal bir veri türü (Uzun veya Çift gibi) kullanabilmeme rağmen, bunu yapmak döndürebileceği sayı aralığını sınırlar. Toplam dizeden çıkarmam gereken 20 numaralı uzun bir dizem varsa, işlevi Uzun veya Çift olarak bildirmek bir hata verir (sayı aralığının dışında olacağından). Bu nedenle, işlev çıktı veri türünü String olarak tuttum.
Kodun ikinci satırı - kesme işaretiyle başlayan yeşil olan - bir yorumdur. Kodu okurken VBA bu satırı yok sayar. Bunu, kod hakkında bir açıklama veya ayrıntı eklemek için kullanabilirsiniz.
Kodun üçüncü satırı, bir Tamsayı veri türü olarak bir 'StringLength' değişkeni bildirir. Bu, formül tarafından analiz edilen dizenin uzunluğunun değerini depoladığımız değişkendir.
Dördüncü satır, Result değişkenini bir String veri türü olarak bildirir. Bu, sayıları alfanümerik diziden çıkaracağımız değişkendir.
Beşinci satır, girdi bağımsız değişkenindeki dizenin uzunluğunu 'StringLength' değişkenine atar. 'CellRef'in, çalışma sayfasındaki formülü kullanırken (veya bu öğreticide daha sonra göreceğimiz VBA'da kullanırken) kullanıcı tarafından verilecek argümanı ifade ettiğini unutmayın.
Altıncı, yedinci ve sekizinci satırlar Sonraki İçin döngüsünün parçalarıdır. Döngü, girdi bağımsız değişkeninde bulunan karakter sayısı kadar çalışır. Bu sayı LEN işlevi tarafından verilir ve 'StringLength' değişkenine atanır.
Böylece döngü '1'den Stringlength'e kadar çalışır.
Döngü içinde, IF ifadesi dizenin her karakterini analiz eder ve sayısal ise, o sayısal karakteri Sonuç değişkenine ekler. Bunu yapmak için VBA'daki MID işlevini kullanır.
Kodun ikinci son satırı, sonucun değerini işleve atar. İşlevin "Sonuç" değerini hücrede (çağrıldığı yerden) geri döndürmesini sağlayan bu kod satırıdır.
Kodun son satırı End Function'dır. Bu, VBA'ya işlev kodunun burada bittiğini söyleyen zorunlu bir kod satırıdır.
Yukarıdaki kod, VBA'da oluşturulan tipik bir özel işlevin farklı bölümlerini açıklar. Aşağıdaki bölümlerde, bu öğeleri derinlemesine inceleyeceğiz ve ayrıca Excel'de VBA işlevini yürütmenin farklı yollarını göreceğiz.
VBA'da Kullanıcı Tanımlı Bir İşlevdeki Argümanlar
Bir alfasayısal dizeden (GetNumeric) sayısal kısmı almak için kullanıcı tanımlı bir işlev oluşturduğumuz yukarıdaki örneklerde, işlev tek bir argüman alacak şekilde tasarlanmıştır.
Bu bölümde, birden fazla argüman (gerekli ve isteğe bağlı argümanlar) alan fonksiyonlara argüman almayan fonksiyonların nasıl oluşturulacağını ele alacağım.
Herhangi Bir Argüman Olmadan VBA'da İşlev Oluşturma
Excel çalışma sayfasında, bağımsız değişken almayan birkaç işlevimiz vardır (RAND, BUGÜN, ŞİMDİ gibi).
Bu işlevler herhangi bir girdi bağımsız değişkenine bağlı değildir. Örneğin, BUGÜN işlevi geçerli tarihi döndürür ve RAND işlevi 0 ile 1 arasında rastgele bir sayı döndürür.
Benzer bir işlevi VBA'da da oluşturabilirsiniz.
Aşağıda size dosyanın adını verecek olan kod bulunmaktadır. Döndürmesi gereken sonuç herhangi bir argümana bağlı olmadığından herhangi bir argüman almaz.
İşlev WorkbookName() As String WorkbookName = ThisWorkbook.Name Bitiş İşlevi
Yukarıdaki kod, işlevin sonucunu bir Dize veri türü olarak belirtir (istediğimiz sonuç dosya adıdır - bu bir dizedir).
Bu fonksiyon, fonksiyon çalışma sayfasında kullanıldığında döndürülen fonksiyona 'ThisWorkbook.Name' değerini atar.
Dosya kaydedilmişse, dosya uzantısıyla birlikte adı döndürür, yoksa yalnızca adı verir.
Yukarıdakilerin bir sorunu var.
Dosya adı değişirse, otomatik olarak güncellenmez. Normalde bir işlev, giriş bağımsız değişkenlerinde bir değişiklik olduğunda yenilenir. Ancak bu işlevde herhangi bir argüman olmadığı için işlev yeniden hesaplama yapmaz (çalışma kitabının adını değiştirseniz bile kapatın ve yeniden açın).
İsterseniz, Ctrl + Alt + F9 klavye kısayolunu kullanarak yeniden hesaplamayı zorlayabilirsiniz.
Çalışma sayfasında bir değişiklik olduğunda formülün yeniden hesaplanmasını sağlamak için, ona bir kod satırı eklemeniz gerekir.
Aşağıdaki kod, çalışma sayfasında bir değişiklik olduğunda işlevin yeniden hesaplanmasını sağlar (tıpkı BUGÜN veya RAND işlevi gibi diğer benzer çalışma sayfası işlevleri gibi).
İşlev WorkbookName() As String Application.Volatile True WorkbookName = ThisWorkbook.Name End Function
Şimdi, çalışma kitabı adını değiştirirseniz, çalışma sayfasında herhangi bir değişiklik olduğunda veya bu çalışma kitabını yeniden açtığınızda bu işlev güncellenir.
Tek Argümanla VBA'da İşlev Oluşturma
Yukarıdaki bölümlerden birinde, sadece bir argüman alan bir fonksiyonun nasıl oluşturulacağını zaten gördük (yukarıda bahsedilen GetNumeric fonksiyonu).
Sadece bir argüman alan başka bir basit fonksiyon oluşturalım.
Aşağıdaki kodla oluşturulan işlev, başvurulan metni büyük harfe dönüştürür. Şimdi bunun için Excel'de zaten bir fonksiyonumuz var ve bu fonksiyon sadece size nasıl çalıştığını göstermek için. Bunu yapmanız gerekiyorsa, yerleşik UPPER işlevini kullanmak daha iyidir.
İşlev ConvertToUpperCase(CellRef As Range) ConvertToUpperCase = UCase(CellRef) End Function
Bu işlev, CellRef değişkeninin değerini değiştirmek için VBA'daki UCase işlevini kullanır. Daha sonra değeri ConvertToUpperCase işlevine atar.
Bu fonksiyon bir argüman aldığı için burada Application.Volatile kısmını kullanmamıza gerek yok. Argüman değişir değişmez, işlev otomatik olarak güncellenir.
VBA'da Birden Çok Argümanla İşlev Oluşturma
Tıpkı çalışma sayfası işlevleri gibi, VBA'da birden çok bağımsız değişken alan işlevler oluşturabilirsiniz.
Aşağıdaki kod, metni belirtilen sınırlayıcıdan önce çıkaracak bir işlev yaratacaktır. İki bağımsız değişken alır - metin dizesini içeren hücre başvurusu ve sınırlayıcı.
İşlev GetDataBeforeDelimiter(CellRef As Range, Delim As String) as String Dim Result As String Dim DelimPosition As Integer DelimPosition = InStr(1, CellRef, Delim, vbBinaryCompare) - 1 Result = Left(CellRef, DelimPosition) GetDataBeforeDelimiter Function = Result
Kullanıcı tanımlı bir fonksiyonda birden fazla argüman kullanmanız gerektiğinde, tüm argümanları virgülle ayırarak parantez içinde alabilirsiniz.
Her bağımsız değişken için bir veri türü belirtebileceğinizi unutmayın. Yukarıdaki örnekte, 'CellRef', bir aralık veri türü olarak ve 'Delim', bir String veri türü olarak bildirilmiştir. Herhangi bir veri türü belirtmezseniz, VBA bunların bir değişken veri türü olduğunu kabul eder.
Çalışma sayfasında yukarıdaki işlevi kullandığınızda, metni ilk argüman olarak içeren hücre referansını ve ikinci argüman olarak çift tırnak içinde sınırlayıcı karakter(ler)i vermeniz gerekir.
Ardından VBA'daki INSTR işlevini kullanarak sınırlayıcının konumunu kontrol eder. Bu konum daha sonra sınırlayıcıdan önceki tüm karakterleri çıkarmak için kullanılır (LEFT işlevini kullanarak).
Son olarak, sonucu fonksiyona atar.
Bu formül mükemmel olmaktan uzaktır. Örneğin metinde bulunmayan bir sınırlayıcı girerseniz hata verir. Artık hatalardan kurtulmak için çalışma sayfasındaki EĞERHATA işlevini kullanabilir veya sınırlayıcıyı bulamadığında metnin tamamını döndüren aşağıdaki kodu kullanabilirsiniz.
İşlev GetDataBeforeDelimiter(CellRef As Range, Delim As String) as String Dim Result As String Dim DelimPosition As Integer DelimPosition = InStr(1, CellRef, Delim, vbBinaryCompare) - 1 DelimPosition < 0 ise DelimPosition = Len(CellRef) Sonuç = Sol CellRef, DelimPosition) GetDataBeforeDelimiter = Sonuç Bitiş İşlevi
Bu işlevi daha da optimize edebiliriz.
(Sınırlayıcıdan önceki kısmı çıkarmak istediğiniz metni) doğrudan fonksiyona girerseniz, bu size bir hata verecektir. Devam edin… deneyin!
Bu, bir aralık veri türü olarak 'CellRef'i belirttiğimiz için olur.
Veya sınırlayıcının bir hücrede olmasını ve formülde sabit kodlamak yerine hücre referansını kullanmak istiyorsanız, bunu yukarıdaki kodla yapamazsınız. Bunun nedeni, Delim'in bir dize veri türü olarak bildirilmiş olmasıdır.
İşlevin, kullanıcıdan doğrudan metin girişi veya hücre referanslarını kabul etme esnekliğine sahip olmasını istiyorsanız, veri türü bildirimini kaldırmanız gerekir. Bu, argümanı, herhangi bir argüman türünü alıp işleyebilen bir değişken veri türü haline getirir.
Aşağıdaki kod bunu yapardı:
İşlev GetDataBeforeDelimiter(CellRef, Delim) As String Dim Result As String Dim DelimPosition As Integer DelimPosition = InStr(1, CellRef, Delim, vbBinaryCompare) - 1 Eğer DelimPosition < 0 ise DelimPosition = Len(CellRef) Result, Left(CellPosition) GetDataBeforeDelimiter = Sonuç Bitiş İşlevi
İsteğe Bağlı Bağımsız Değişkenlerle VBA'da İşlev Oluşturma
Excel'de bazı bağımsız değişkenlerin isteğe bağlı olduğu birçok işlev vardır.
Örneğin, efsanevi DÜŞEYARA işlevinin 3 zorunlu bağımsız değişkeni ve bir isteğe bağlı bağımsız değişkeni vardır.
Adından da anlaşılacağı gibi isteğe bağlı bir argüman belirtmek isteğe bağlıdır. Zorunlu argümanlardan birini belirtmezseniz, fonksiyonunuz size bir hata verecektir, ancak isteğe bağlı argümanı belirtmezseniz, fonksiyonunuz çalışacaktır.
Ancak isteğe bağlı argümanlar işe yaramaz değildir. Bir dizi seçenek arasından seçim yapmanıza izin verirler.
Örneğin DÜŞEYARA işlevinde dördüncü argümanı belirtmezseniz DÜŞEYARA yaklaşık bir arama yapar ve son argümanı YANLIŞ (veya 0) olarak belirtirseniz tam eşleşme yapar.
İsteğe bağlı argümanların her zaman gerekli tüm argümanlardan sonra gelmesi gerektiğini unutmayın. Başlangıçta isteğe bağlı argümanlarınız olamaz.
Şimdi isteğe bağlı argümanlarla VBA'da nasıl fonksiyon oluşturulacağını görelim.
Yalnızca İsteğe Bağlı Bir Argümanla İşlev
Bildiğim kadarıyla, yalnızca isteğe bağlı argümanları alan yerleşik bir işlev yok (burada yanılıyor olabilirim ama böyle bir işlev düşünemiyorum).
Ancak VBA ile bir tane oluşturabiliriz.
Herhangi bir argüman girmezseniz (yani boş bırakın) gg-aa-yyyy formatında, herhangi bir şey girerseniz “gg mmmm, yyyy” formatında size güncel tarihi verecek olan fonksiyonun kodu aşağıdadır. argüman olarak (yani, argümanın boş olmaması için herhangi bir şey).
İşlev CurrDate(Opsiyonel fmt As Variant) Dim Result If IsMissing(fmt) O zaman CurrDate = Format(Date, "gg-aa-yyyy") Else CurrDate = Format(Date, "gg mmmm, yyyy") End If End Function
Yukarıdaki işlevin, bağımsız değişkenin eksik olup olmadığını kontrol etmek için 'IsMissing' kullandığını unutmayın. IsMissing işlevini kullanmak için isteğe bağlı bağımsız değişkeniniz değişken veri türünde olmalıdır.
Yukarıdaki işlev, argüman olarak ne girerseniz girin çalışır. Kodda sadece isteğe bağlı argümanın sağlanıp sağlanmadığını kontrol ediyoruz.
Argüman olarak yalnızca belirli değerleri alarak ve geri kalan durumlarda bir hata göstererek (aşağıdaki kodda gösterildiği gibi) bunu daha sağlam hale getirebilirsiniz.
İşlev CurrDate(Varyant Olarak Opsiyonel fmt) Dim Result If IsMissing(fmt) Then CurrDate = Format(Date, "gg-mm-yyyy") ElseIf fmt = 1 Then CurrDate = Format(Date, "gg mmmm, yyyy") Başka CurrDate = CVERr(xlErrValue) End If End Fonksiyonu
Yukarıdaki kod, argüman verilmemişse “gg-aa-yyyy” formatında, argüman 1 olduğunda “gg mmmm,yyyy” formatında tarihi gösteren bir fonksiyon oluşturur. Diğer tüm durumlarda hata verir.
Gerekli ve İsteğe Bağlı Bağımsız Değişkenlerle İşlev
Bir dizgeden sayısal kısmı çıkaran bir kod görmüştük.
Şimdi hem gerekli hem de isteğe bağlı argümanları alan benzer bir örneğe bakalım.
Aşağıdaki kod, metin bölümünü bir dizeden çıkaran bir işlev oluşturur. İsteğe bağlı argüman TRUE ise sonucu büyük harfle, isteğe bağlı argüman FALSE ise veya atlanırsa sonucu olduğu gibi verir.
İşlev GetText(CellRef As Range, İsteğe Bağlı TextCase = False) As String Dim StringLength As Integer Dim Result As String StringLength = Len(CellRef) For i = 1 To StringLength If Not (IsNumeric(Mid(CellRef, i, 1))) Sonra Result = Result & Mid(CellRef, i, 1) Sonraki i If TextCase = True Then Result = UCase(Result) GetText = Result End Function
Yukarıdaki kodda, 'TextCase' değerini False olarak başlattığımızı unutmayın (ilk satırdaki parantez içine bakın).
Bunu yaparak, isteğe bağlı argümanın FALSE olan varsayılan değerle başlamasını sağladık. Kullanıcı değeri DOĞRU olarak belirtirse, işlev metni büyük harfle döndürür ve kullanıcı isteğe bağlı bağımsız değişkeni YANLIŞ olarak belirtir veya atlarsa, döndürülen metin olduğu gibidir.
Argüman Olarak Dizi ile VBA'da İşlev Oluşturma
Şimdiye kadar, İsteğe Bağlı/Gerekli argümanlarla bir fonksiyon yaratmanın örneklerini gördük - burada bu argümanlar tek bir değerdi.
Argüman olarak bir dizi alabilen bir işlev de oluşturabilirsiniz. Excel çalışma sayfası işlevlerinde, SUM, DÜŞEYARA, SUMIF, COUNTIF vb. gibi dizi bağımsız değişkenleri alan birçok işlev vardır.
Aşağıda, belirtilen hücre aralığındaki tüm çift sayıların toplamını veren bir işlev oluşturan kod bulunmaktadır.
AddEven(CellRef as Range) Dim Cell Her Hücre İçin Aralık Olarak Dim Cell Eğer IsNumeric(Cell.Value) ise Cell.Value Mod 2 = 0 O zaman Result = Result + Cell.Value End If End If Next Cell AddEven = Result End İşlev
Bu işlevi çalışma sayfasında kullanabilir ve bağımsız değişken olarak sayıları içeren hücre aralığını sağlayabilirsiniz. İşlev, tek bir değer döndürür - tüm çift sayıların toplamı (aşağıda gösterildiği gibi).
Yukarıdaki fonksiyonda tek bir değer yerine bir dizi (A1:A10) sağladık. Bunun çalışması için, argümanın veri tipinin bir diziyi kabul edebildiğinden emin olmanız gerekir.
Yukarıdaki kodda, CellRef argümanını Range (giriş olarak bir dizi alabilen) olarak belirttim. Burada varyant veri türünü de kullanabilirsiniz.
Kodda, her hücreden geçen ve bir sayı olup olmadığını kontrol eden Her Bir For döngüsü vardır. Değilse, hiçbir şey olmaz ve bir sonraki hücreye geçer. Eğer bir sayı ise çift olup olmadığını kontrol eder (MOD fonksiyonunu kullanarak).
Sonunda, tüm çift sayılar toplanır ve toplam işleve geri atanır.
Belirsiz Sayıda Argümanlı Bir Fonksiyon Oluşturma
VBA'da bazı işlevler oluştururken, bir kullanıcının sağlamak istediği argüman sayısını tam olarak bilemeyebilirsiniz. Bu nedenle ihtiyaç, sağlanan birçok argümanı kabul edebilen ve sonucu döndürmek için bunları kullanan bir işlev oluşturmaktır.
Bu tür çalışma sayfası işlevine bir örnek, SUM işlevidir. Buna birden fazla argüman sağlayabilirsiniz (bunun gibi):
=TOPLA(A1,A2:A4,B1:B20)
Yukarıdaki işlev, tüm bu argümanlardaki değerleri ekler. Ayrıca, bunların tek bir hücre veya bir dizi hücre olabileceğini unutmayın.
Son argümanı (veya tek argüman olabilir) isteğe bağlı olarak VBA'da böyle bir işlev oluşturabilirsiniz. Ayrıca, bu isteğe bağlı argümandan önce 'ParamArray' anahtar kelimesi gelmelidir.
'ParamArray', istediğiniz kadar argüman kabul etmenize izin veren bir değiştiricidir. ParamArray sözcüğünü bir bağımsız değişkenden önce kullanmanın, bağımsız değişkeni isteğe bağlı hale getirdiğini unutmayın. Ancak burada İsteğe bağlı kelimesini kullanmanıza gerek yoktur.
Şimdi rastgele sayıda argüman kabul edebilen ve belirtilen argümanlardaki tüm sayıları toplayacak bir fonksiyon oluşturalım:
İşlev AddArguments(ParamArray arglist() As Variant) arglist'teki Her arg için AddArguments = AddArguments + arg Sonraki arg End Function
Yukarıdaki fonksiyon herhangi bir sayıda argüman alabilir ve sonucu vermek için bu argümanları ekleyebilir.
Bağımsız değişken olarak yalnızca tek bir değer, hücre başvurusu, boole veya ifade kullanabileceğinizi unutmayın. Argüman olarak bir dizi sağlayamazsınız. Örneğin, argümanlarınızdan biri D8:D10 ise, bu formül size bir hata verecektir.
Her iki çok hücreli bağımsız değişkeni de kullanabilmek istiyorsanız, aşağıdaki kodu kullanmanız gerekir:
İşlev AddArguments(ParamArray arglist() As Variant) arglist'teki her arg için arg'deki her Hücre için AddArguments = AddArguments + Hücre Sonraki Hücre Sonraki arg End Function
Bu formülün birden çok hücre ve dizi referansıyla çalıştığını, ancak sabit kodlanmış değerleri veya ifadeleri işleyemediğini unutmayın. Bu koşulları kontrol ederek ve tedavi ederek daha sağlam bir fonksiyon oluşturabilirsiniz, ancak buradaki amaç bu değildir.
Buradaki amaç, fonksiyonda sınırsız sayıda argümana izin verebilmeniz için ParamArray'in nasıl çalıştığını size göstermektir. Yukarıdaki kod tarafından oluşturulandan daha iyi bir işlev istiyorsanız, çalışma sayfasındaki SUM işlevini kullanın.
Dizi Döndüren Bir İşlev Oluşturma
Şimdiye kadar tek bir değer döndüren fonksiyonlar gördük.
VBA ile, tüm değerler dizisini içerebilen bir değişken döndüren bir işlev oluşturabilirsiniz.
Dizi formülleri, Excel çalışma sayfalarında yerleşik işlevler olarak da mevcuttur. Excel'deki dizi formüllerine aşina iseniz, bunların Control + Shift + Enter (yalnızca Enter yerine) kullanılarak girildiğini bilirsiniz. Dizi formülleri hakkında daha fazlasını buradan okuyabilirsiniz. Dizi formüllerini bilmiyorsanız endişelenmeyin, okumaya devam edin.
Üç sayıdan (1,2,3) oluşan bir dizi döndüren bir formül oluşturalım.
Aşağıdaki kod bunu yapacaktı.
ThreeNumbers() Varyant Olarak İşlev Dim NumberValue(1 - 3) NumberValue(1) = 1 NumberValue(2) = 2 NumberValue(3) = 3 ThreeNumbers = NumberValue Bitiş İşlevi
Yukarıdaki kodda 'ThreeNumbers' fonksiyonunu varyant olarak belirttik. Bu, bir dizi değeri tutmasına izin verir.
'NumberValue' değişkeni 3 elemanlı bir dizi olarak bildirildi. Üç değeri tutar ve 'ÜçSayı' işlevine atar.
Çalışma sayfasında bu işlevi, işlevi girip Control + Shift + Enter tuşlarına basarak kullanabilirsiniz (Control ve Shift tuşlarını basılı tutun ve ardından Enter'a basın).
Bunu yaptığınızda hücrede 1 döndürür, ancak gerçekte üç değeri de tutar. Bunu kontrol etmek için aşağıdaki formülü kullanın:
=MAKS(ÜçSayı())
Yukarıdaki işlevi Control + Shift + Enter ile kullanın. Üç sayıyı kullanıcı tanımlı fonksiyonumuz olan ThreeNumbers'ın sonucu olarak alan Max işlevi tarafından döndürülen dizideki en büyük değerler olduğu için sonucun şimdi 3 olduğunu fark edeceksiniz.
Aşağıdaki kodda gösterildiği gibi bir Ay Adları dizisi döndüren bir işlev oluşturmak için aynı tekniği kullanabilirsiniz:
Aylar() İşlevi Değişken Olarak Dim AyAdı(1 - 12) AyAdı(1) = "Ocak" AyAdı(2) = "Şubat" AyAdı(3) = "Mart" AyAdı(4) = "Nisan" AyAdı(5) = "Mayıs" MonthName(6) = "Haziran" MonthName(7) = "Temmuz" MonthName(8) = "Ağustos" MonthName(9) = "Eylül" MonthName(10) = "Ekim" MonthName(11) = "Kasım " MonthName(12) = "Aralık" Aylar = MonthName Bitiş Fonksiyonu
Şimdi Excel çalışma sayfasına =Aylar() işlevini girdiğinizde ve Control + Shift + Enter kullandığınızda, tüm ay adları dizisini döndürür. Dizideki ilk değer olduğu için hücrede yalnızca Ocak ayı gördüğünüzü unutmayın. Bu, dizinin yalnızca bir değer döndürdüğü anlamına gelmez.
Size tüm değerleri döndürdüğünü göstermek için bunu yapın - formülü içeren hücreyi seçin, formül çubuğuna gidin, tüm formülü seçin ve F9 tuşuna basın. Bu size fonksiyonun döndürdüğü tüm değerleri gösterecektir.
Bunu, aşağıdaki INDEX formülünü kullanarak tek seferde tüm ay adlarının bir listesini almak için kullanabilirsiniz.
=INDEX(Ay(),SATIR())
Şimdi çok fazla değeriniz varsa, bu değerleri tek tek atamak (yukarıda yaptığımız gibi) iyi bir uygulama değildir. Bunun yerine, VBA'da Dizi işlevini kullanabilirsiniz.
Dolayısıyla, 'Aylar' işlevini oluşturduğumuz aynı kod, aşağıda gösterildiği gibi kısalır:
Function Months() As Variant Months = Array("Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", _ "Temmuz", "Ağustos", "Eylül", "Ekim" , "Kasım", "Aralık") Bitiş Fonksiyonu
Yukarıdaki işlev, değerleri doğrudan işleve atamak için Dizi işlevini kullanır.
Yukarıda oluşturulan tüm işlevlerin yatay bir değerler dizisi döndürdüğünü unutmayın. Bu, 12 yatay hücre seçerseniz (diyelim A1:L1) ve A1 hücresine =Aylar() formülünü girerseniz, size tüm ay adlarını verecektir.
Peki ya bu değerleri dikey bir hücre aralığında istiyorsanız.
Bunu çalışma sayfasındaki TRANSPOSE formülünü kullanarak yapabilirsiniz.
Basitçe 12 dikey hücre seçin (bitişik) ve aşağıdaki formülü girin.
Excel'de Kullanıcı Tanımlı Bir İşlevin Kapsamını Anlama
Bir işlevin iki kapsamı olabilir - Halk veya Özel.
- A Genel kapsam işlevin çalışma kitabındaki tüm sayfalar ve çalışma kitabındaki tüm modüllerdeki tüm prosedürler (Alt ve İşlev) için kullanılabilir olduğu anlamına gelir. Bu, bir alt programdan bir fonksiyon çağırmak istediğinizde kullanışlıdır (bunun nasıl yapıldığını bir sonraki bölümde göreceğiz).
- A Özel kapsam işlevin yalnızca içinde bulunduğu modülde mevcut olduğu anlamına gelir. Diğer modüllerde kullanamazsınız. Ayrıca, çalışma sayfasındaki işlevler listesinde görmezsiniz. Örneğin, İşlev adınız 'Aylar()' ise ve Excel'de işlev yazarsanız (= işaretinden sonra), size işlev adını göstermez. Bununla birlikte, formül adını girerseniz yine de kullanabilirsiniz.
Hiçbir şey belirtmezseniz, işlev varsayılan olarak bir Genel işlevdir.
Aşağıda Özel bir işlev olan bir işlev verilmiştir:
Özel İşlev WorkbookName() As String WorkbookName = ThisWorkbook.Name Bitiş İşlevi
Bu işlevi aynı modüllerdeki alt programlarda ve prosedürlerde kullanabilirsiniz, ancak diğer modüllerde kullanamazsınız. Bu işlev, çalışma sayfasında da görünmez.
Aşağıdaki kod bu işlevi Public yapacaktır. Ayrıca çalışma sayfasında da görünecektir.
İşlev WorkbookName() As String WorkbookName = ThisWorkbook.Name Bitiş İşlevi
Excel'de Kullanıcı Tanımlı Bir İşlev Kullanmanın Farklı Yolları
VBA'da kullanıcı tanımlı bir fonksiyon oluşturduktan sonra, onu birçok farklı şekilde kullanabilirsiniz.
İlk önce çalışma sayfasındaki fonksiyonların nasıl kullanılacağını ele alalım.
Çalışma Sayfalarında UDF'leri Kullanma
Çalışma sayfasında VBA'da oluşturulan bir işlevi kullanmanın örneklerini zaten gördük.
Tek yapmanız gereken fonksiyon adını girmek ve intellisense'de görünüyor.
İşlevin çalışma sayfasında görünmesi için bir Genel işlev olması gerektiğini unutmayın (yukarıdaki bölümde açıklandığı gibi).
Kullanıcı tanımlı işlevi eklemek için İşlev Ekle iletişim kutusunu da kullanabilirsiniz (aşağıdaki adımları kullanarak). Bu, yalnızca Genel olan işlevler için işe yarar.
- Veri sekmesine gidin.
- 'İşlev Ekle' seçeneğini tıklayın.
- İşlev Ekle iletişim kutusunda, kategori olarak Kullanıcı Tanımlı'yı seçin. Bu seçenek yalnızca VB Editöründe bir işleviniz olduğunda (ve işlev Genel olduğunda) görünür.
- Tüm Genel Kullanıcı Tanımlı işlevler listesinden işlevi seçin.
- Tamam düğmesini tıklayın.
Yukarıdaki adımlar, işlevi çalışma sayfasına ekler. Ayrıca, argümanlar ve sonuç hakkında size ayrıntılı bilgi verecek bir İşlev Argümanları iletişim kutusu görüntüler.
Excel'deki diğer işlevler gibi kullanıcı tanımlı bir işlev kullanabilirsiniz. Bu ayrıca, onu diğer yerleşik Excel işlevleriyle kullanabileceğiniz anlamına gelir. Örneğin. aşağıdaki formül, çalışma kitabının adını büyük harfle verir:
=BÜYÜK(Çalışma KitabıAdı())
VBA Prosedürlerinde ve İşlevlerinde Kullanıcı Tanımlı İşlevleri Kullanma
Bir fonksiyon oluşturduğunuzda onu diğer alt işlemlerde de kullanabilirsiniz.
İşlev Public ise, aynı veya farklı modüldeki herhangi bir prosedürde kullanılabilir. Private ise sadece aynı modülde kullanılabilir.
Aşağıda, çalışma kitabının adını döndüren bir işlev bulunmaktadır.
İşlev WorkbookName() As String WorkbookName = ThisWorkbook.Name Bitiş İşlevi
Aşağıdaki prosedür işlevi çağırır ve ardından adı bir mesaj kutusunda görüntüler.
Sub ShowWorkbookName() MsgBox WorkbookName End Sub
Bir işlevi başka bir işlevden de çağırabilirsiniz.
Aşağıdaki kodlarda, ilk kod çalışma kitabının adını, ikincisi ise ilk işlevi çağırarak adı büyük harfle döndürür.
İşlev WorkbookName() As String WorkbookName = ThisWorkbook.Name Bitiş İşlevi
Function WorkbookNameinUpper() WorkbookNameinUpper = UCase(WorkbookName) End Function
Diğer Çalışma Kitaplarından Kullanıcı Tanımlı Bir Fonksiyonu Çağırma
Bir çalışma kitabında bir fonksiyonunuz varsa, bu fonksiyonu diğer çalışma kitaplarında da çağırabilirsiniz.
Bunu yapmanın birden fazla yolu vardır:
- Eklenti Oluşturma
- Kişisel Makro Çalışma Kitabında kaydetme işlevi
- Başka bir çalışma kitabından işleve başvurma.
Eklenti Oluşturma
Bir eklenti oluşturup kurarak, tüm çalışma kitaplarında bulunan özel işleve sahip olacaksınız.
Özel bir işlev oluşturduğunuzu varsayalım - 'GetNumeric' ve bunu tüm çalışma kitaplarında istiyorsunuz. Bunu yapmak için yeni bir çalışma kitabı oluşturun ve fonksiyon kodunu bu yeni çalışma kitabındaki bir modülde bulundurun.
Şimdi eklenti olarak kaydetmek için aşağıdaki adımları izleyin ve ardından Excel'e yükleyin.
- Dosya sekmesine gidin ve Farklı Kaydet'e tıklayın.
- Farklı Kaydet iletişim kutusunda, "Farklı kaydet" türünü .xlam olarak değiştirin. Dosyaya atadığınız ad, eklentinizin adı olacaktır. Bu örnekte, dosya GetNumeric adıyla kaydedilir.
- Dosyanın kaydedildiği yolun otomatik olarak değiştiğini fark edeceksiniz. Varsayılanı kullanabilir veya isterseniz değiştirebilirsiniz.
- Dosyanın kaydedildiği yolun otomatik olarak değiştiğini fark edeceksiniz. Varsayılanı kullanabilir veya isterseniz değiştirebilirsiniz.
- Yeni bir Excel çalışma kitabı açın ve Geliştirici sekmesine gidin.
- Excel Eklentileri seçeneğini tıklayın.
- Eklentiler iletişim kutusunda, kaydettiğiniz dosyaya göz atın ve dosyayı bulun ve Tamam'ı tıklayın.
Artık eklenti etkinleştirilmiştir.
Artık tüm çalışma kitaplarında özel işlevi kullanabilirsiniz.
Kişisel Makro Çalışma Kitabında İşlevi Kaydetme
Kişisel Makro Çalışma Kitabı, Excel uygulamasını her açtığınızda sisteminizde açılan gizli bir çalışma kitabıdır.
Makro kodlarını saklayabileceğiniz ve ardından bu makrolara herhangi bir çalışma kitabından erişebileceğiniz bir yerdir. Sık kullanmak istediğiniz makroları saklamak için harika bir yerdir.
Varsayılan olarak, Excel'inizde kişisel makro çalışma kitabı yoktur. Bir makro kaydedip Kişisel makro çalışma kitabına kaydederek oluşturmanız gerekir.
Kişisel makro çalışma kitabında makroların nasıl oluşturulacağı ve kaydedileceği ile ilgili ayrıntılı adımları burada bulabilirsiniz.
İşlevi başka bir çalışma kitabından referans alma
İlk iki yöntem (bir eklenti oluşturma ve kişisel makro çalışma kitabını kullanma) her durumda işe yarayacak olsa da, işleve başka bir çalışma kitabından başvurmak istiyorsanız, o çalışma kitabının açık olması gerekir.
"adlı bir çalışma kitabınız olduğunu varsayalım.Formüllü Çalışma Kitabı've 'adlı işleve sahiptir.GetSayısal'.
Bu işlevi başka bir çalışma kitabında kullanmak için ( Formüllü Çalışma Kitabı açık), aşağıdaki formülü kullanabilirsiniz:
='Formüllü Çalışma Kitabı'!GetNumeric(A1)
Yukarıdaki formül, kullanıcı tanımlı işlevi kullanacaktır. Formüllü Çalışma Kitabı dosya ve size sonucu verin.
Çalışma kitabı adında boşluklar olduğundan, onu tek tırnak içine almanız gerektiğini unutmayın.
Çıkış İşlev Bildirimi VBA'yı Kullanma
Kod çalışırken bir fonksiyondan çıkmak istiyorsanız, bunu 'Exit Function' deyimini kullanarak yapabilirsiniz.
Aşağıdaki kod, alfasayısal bir metin dizesinden ilk üç sayısal karakteri çıkarır. Üç karakteri alır almaz fonksiyon biter ve sonucu döndürür.
GetNumericFirstThree(CellRef As Range) As Long Dim StringLength As Integer StringLength = Len(CellRef) i = 1 için StringLength için J = 3 ise Fonksiyondan Çık Eğer IsNumeric(Mid(CellRef, i, 1)) O zaman J = J + 1 Result = Result & Mid(CellRef, i, 1) GetNumericFirstThree = Result If Next i End Function
Yukarıdaki fonksiyon sayısal karakter sayısını kontrol eder ve 3 sayısal karakter aldığında sonraki döngüde fonksiyondan çıkar.
Kullanıcı Tanımlı Bir İşlevde Hata Ayıklama
VBA'da kullanıcı tanımlı bir işlevde hata ayıklarken kullanabileceğiniz birkaç teknik vardır:
İleti Kutusunu Kullanarak Özel Bir İşlevde Hata Ayıklama
Belirli bir değere sahip bir mesaj kutusu göstermek için MsgBox işlevini kullanın.
Gösterdiğiniz değer, test etmek istediğiniz şeye dayalı olabilir. Örneğin, kodun çalışıp çalışmadığını kontrol etmek istiyorsanız, herhangi bir mesaj işe yarayacaktır ve döngülerin çalışıp çalışmadığını kontrol etmek istiyorsanız, belirli bir değeri veya döngü sayacını görüntüleyebilirsiniz.
Kesme Noktasını Ayarlayarak Özel Bir İşlevde Hata Ayıklama
Her satırda birer birer adım atabilmek için bir kesme noktası ayarlayın. Bir kesme noktası ayarlamak için, istediğiniz satırı seçin ve F9 tuşuna basın veya kod satırlarının solundaki gri dikey alana tıklayın. Bu yöntemlerden herhangi biri bir kesme noktası ekler (gri alanda kırmızı bir nokta görürsünüz).
Kesme noktasını ayarladığınızda ve işlevi çalıştırdığınızda, kesme noktası çizgisine kadar gider ve sonra durur. Şimdi F8 tuşunu kullanarak kodu adım adım ilerleyebilirsiniz. F8'e bir kez basmak kodda bir sonraki satıra geçer.
Kodda Debug.Print Kullanarak Özel Bir İşlevde Hata Ayıklama
Hemen pencerede belirtilen değişkenlerin/argümanların değerlerini almak için kodunuzda Debug.Print deyimini kullanabilirsiniz.
Örneğin, aşağıdaki kodda, iki değişkenin - 'j' ve 'Sonuç' değerini almak için Debug.Print'i kullandım.
GetNumericFirstThree(CellRef As Range) As Long Dim StringLength As Integer StringLength = Len(CellRef) i = 1 için StringLength için J = 3 ise Fonksiyondan Çık Eğer IsNumeric(Mid(CellRef, i, 1)) O zaman J = J + 1 Result = Result & Mid(CellRef, i, 1) Debug.Print J, Result GetNumericFirstThree = Result If Next i End Function
Bu kod çalıştırıldığında, hemen pencerede aşağıdakileri gösterir.
Excel Dahili İşlevler Vs. VBA Kullanıcı Tanımlı İşlev
VBA'da oluşturulan özel işlevler yerine Excel'in yerleşik işlevlerini kullanmanın birkaç güçlü yararı vardır.
- Dahili işlevler, VBA işlevlerinden çok daha hızlıdır.
- VBA işlevlerini kullanarak bir rapor/pano oluşturduğunuzda ve bunu bir müşteriye/iş arkadaşınıza gönderdiğinizde, makroların etkin olup olmadığı konusunda endişelenmeleri gerekmez. Bazı durumlarda, müşteriler/müşteriler sarı çubukta (sadece makroları etkinleştirmelerini isteyen) bir uyarı görerek korkarlar.
- Dahili Excel işlevleriyle dosya uzantıları hakkında endişelenmenize gerek yok. Çalışma kitabında makrolarınız veya kullanıcı tanımlı işlevleriniz varsa, bunları .xlsm dosyasına kaydetmeniz gerekir.
Excel'in yerleşik işlevlerini kullanmak için birçok güçlü neden olsa da, bazı durumlarda kullanıcı tanımlı bir işlev kullanmanız daha iyi olur.
- Dahili formülünüz çok büyük ve karmaşıksa, kullanıcı tanımlı bir işlev kullanmak daha iyidir. Formülleri güncellemek için başka birine ihtiyacınız olduğunda bu daha da alakalı hale gelir. Örneğin, birçok farklı işlevden oluşan büyük bir formülünüz varsa, bir hücreye yapılan başvuruyu değiştirmek bile sıkıcı ve hataya açık olabilir. Bunun yerine, yalnızca bir veya iki bağımsız değişken alan ve arka ucun tüm yükünü kaldıran özel bir işlev oluşturabilirsiniz.
- Excel'in yerleşik işlevleri tarafından yapılamayan bir şeyi yapmanız gerektiğinde. Bunun bir örneği, bir dizeden tüm sayısal karakterleri çıkarmak istediğinizde olabilir. Bu gibi durumlarda, kullanıcı tanımlı bir işlev kullanmanın yararı, olumsuzlarından daha ağır basar.
Kullanıcı Tanımlı Bir İşlev için VBA Kodunun nereye yerleştirileceği
Özel bir işlev oluştururken, işlevi istediğiniz çalışma kitabının kod penceresine kodu koymanız gerekir.
Aşağıda, çalışma kitabına 'GetNumeric' işlevinin kodunu yerleştirme adımları verilmiştir.
- Geliştirici sekmesine gidin.
- Visual Basic seçeneğine tıklayın. Bu, arka uçta VB düzenleyicisini açacaktır.
- VB Düzenleyicisi'ndeki Proje Gezgini bölmesinde, kodu eklemek istediğiniz çalışma kitabı için herhangi bir nesneye sağ tıklayın. Proje Gezgini'ni görmüyorsanız, Görünüm sekmesine gidin ve Proje Gezgini'ne tıklayın.
- Ekle'ye gidin ve Modül'e tıklayın. Bu, çalışma kitabınız için bir modül nesnesi ekleyecektir.
- Modül penceresindeki kodu kopyalayıp yapıştırın.
Aşağıdaki Excel VBA Eğitimlerini de Beğenebilirsiniz:
- Excel VBA'da Hücreler ve Aralıklarla Çalışma.
- Excel VBA'da Çalışma Sayfalarıyla Çalışma.
- VBA kullanarak Çalışma Kitapları ile çalışma.
- Excel VBA'da Döngüler nasıl kullanılır.
- Excel VBA Etkinlikleri - Kolay (ve Eksiksiz) Bir Kılavuz
- VBA'da IF Then Else İfadelerini Kullanma.
- Excel'de Makro Nasıl Kaydedilir.
- Excel'de Makro Nasıl Çalıştırılır.
- VBA kullanarak Excel'de Veriler Nasıl Sıralanır (Adım Adım Kılavuz).
- Excel VBA InStr İşlevi - Örneklerle Açıklandı.