İlk Excel VBA İşlevinizi Yazma

İçindekiler:

Anonim

Bu derste Excel VBA işlevi hakkında bilgi edineceğiz

1) Excel'de Visual Basic nedir?

2) Excel'de VBA nasıl kullanılır?

3) Kullanıcı tanımlı fonksiyon nasıl oluşturulur?

4) Makro nasıl yazılır?

VBA kodu nasıl yazılır

Excel, kullanıcıya, ortalama bir kullanıcıyı tatmin etmek için fazlasıyla yeterli olan geniş bir hazır işlev koleksiyonu sağlar. Mevcut olan çeşitli eklentiler yüklenerek çok daha fazlası eklenebilir. Çoğu hesaplama, sağlananlarla yapılabilir, ancak kendinizi belirli bir işi yapan bir işlevin olmasını dilerken bulmanız çok uzun sürmez ve listede uygun bir şey bulamıyorsunuz. Bir UDF'ye ihtiyacınız var. Bir UDF (Kullanıcı Tanımlı İşlev), VBA ile kendiniz oluşturduğunuz bir işlevdir. UDF'lere genellikle "Özel İşlevler" denir. Bir UDF, bir çalışma kitabına bağlı bir kod modülünde kalabilir; bu durumda, o çalışma kitabı açıkken her zaman kullanılabilir olacaktır. Alternatif olarak, tıpkı ticari bir eklenti gibi Excel'e yükleyebileceğiniz bir veya daha fazla işlevi içeren kendi eklentinizi oluşturabilirsiniz. UDF'lere kod modülleri ile de erişilebilir. UDF'ler genellikle geliştiriciler tarafından yalnızca bir VBA prosedürünün kodu içinde çalışmak üzere oluşturulur ve kullanıcı bunların varlığından asla haberdar olmaz. Herhangi bir işlev gibi, UDF de istediğiniz kadar basit veya karmaşık olabilir. Kolay bir tane ile başlayalım…

Bir Dikdörtgenin Alanını Hesaplayan Bir Fonksiyon

Evet, bunu kafanda yapabileceğini biliyorum! Konsept çok basittir, böylece tekniğe konsantre olabilirsiniz. Bir dikdörtgenin alanını hesaplamak için bir fonksiyona ihtiyacınız olduğunu varsayalım. Excel'in işlev koleksiyonuna bakıyorsunuz, ancak uygun bir tane yok. Yapılması gereken hesaplama şudur:

ALAN = UZUNLUK x GENİŞLİK

Yeni bir çalışma kitabı açın ve ardından Visual Basic Düzenleyicisini açın (Araçlar > Makro > Visual Basic Düzenleyici veya ALT+F11).

Fonksiyonunuzu yazacağınız bir modüle ihtiyacınız olacak, bu yüzden seçin Ekle > Modül. Boş modül tipine: İşlev Alanı ve bas GİRMEK.Visual Basic Editor satırı sizin için tamamlar ve bir alt program oluşturuyormuşsunuz gibi bir End Function satırı ekler.Şimdiye kadar bu şekilde görünüyor…

İşlev Alanı() Son İşlev

İmlecinizi "Alan"dan sonra parantezlerin arasına yerleştirin. Parantezlerin ne işe yaradığını hiç merak ettiyseniz, öğrenmek üzeresiniz! Fonksiyonumuzun alacağı "argümanları" belirleyeceğiz (bir argüman hesaplamayı yapmak için gereken bir bilgi parçasıdır). Tip Uzunluk çift, Genişlik çift ve altındaki boş satırı tıklayın. Siz yazarken, yazdıklarınıza uygun olan her şeyi listeleyen bir kaydırma kutusu açılır.

Bu özellik denir Üyeleri Otomatik Listele. Görünmüyorsa, kapalıdır (açın Araçlar > Seçenekler > Düzenleyici) veya daha önce bir yazım hatası yapmış olabilirsiniz. Sözdiziminiz üzerinde çok faydalı bir kontroldür. İhtiyacınız olan öğeyi bulun ve kodunuza eklemek için çift tıklayın. Bunu görmezden gelebilir ve isterseniz sadece yazabilirsiniz. Kodunuz şimdi şöyle görünüyor…

Fonksiyon Alanı(Uzunluk Çift, Genişlik Çift) Bitiş Fonksiyonu

Argümanların veri türünü bildirmek zorunlu değildir ancak mantıklıdır. yazabilirdin Uzunluğu genişliği ve bu şekilde bıraktı, ancak Excel'e hangi veri türünü bekleyeceği konusunda uyarmak, kodunuzun daha hızlı çalışmasına yardımcı olur ve girişteki hataları alır. NS çift veri türü sayıyı ifade eder (ki bu çok büyük olabilir) ve kesirlere izin verir. Şimdi hesaplamanın kendisi için. Boş satırda önce tuşuna basın. SEKME kodunuzu girintilemek için (okunmayı kolaylaştırır) ve yazın Alan = Uzunluk * Genişlik. İşte tamamlanmış kod…

Fonksiyon Alanı(Uzunluk İkili, Genişlik İkili) Alan = Uzunluk * Genişlik Bitiş Fonksiyon

Siz yazarken Visual Basic Düzenleyicisi'nin yardım özelliklerinden birinin açıldığını fark edeceksiniz. Otomatik Hızlı Bilgi

Burası alakalı değil. Amacı, hangi argümanların gerekli olduğunu söyleyerek VBA'da işlevler yazmanıza yardımcı olmaktır. Fonksiyonunuzu hemen test edebilirsiniz. Excel penceresine geçin ve Uzunluk ve Genişlik değerlerini ayrı hücrelere girin. Üçüncü bir hücrede, işlevinizi yerleşik olanlardan biriymiş gibi girin. Bu örnekte A1 hücresi uzunluğu (17) ve B1 hücresi genişliği (6.5) içerir. C1 de yazdım =alan(A1,B1) ve yeni fonksiyon alanı (110.5) hesapladı…

Bazen bir fonksiyonun argümanları isteğe bağlı olabilir. Bu örnekte şunları yapabiliriz Genişlik isteğe bağlı argüman. Dikdörtgenin Uzunluk ve Genişlik eşit olan bir kare olduğunu varsayalım. Kullanıcıyı iki argüman girmek zorunda bırakmaktan kurtarmak için sadece Uzunluk girmelerine izin verebilir ve fonksiyonun bu değeri iki kez kullanmasını sağlayabiliriz (yani Uzunluk x Uzunluk ile çarpın). Bu yüzden fonksiyon bunu ne zaman yapabileceğini bilir, bir EĞER deyimi karar vermesine yardımcı olmak için. Kodu şöyle görünecek şekilde değiştirin…

Fonksiyon Alanı(Uzunluk Çift, Opsiyonel Genişlik Varyant) Eksik(Genişlik) ise Alan = Uzunluk * Uzunluk Diğer Alan = Uzunluk * Genişlik Bitiş ise Bitiş Fonksiyon

Genişlik için veri türünün olarak değiştirildiğini unutmayın. varyant boş değerlere izin vermek için. İşlev artık kullanıcının yalnızca bir argüman girmesine izin verir, örn. =alan(A1).Fonksiyondaki EĞER deyimi Width argümanının sağlanmış olup olmadığını kontrol eder ve buna göre hesaplar…

Yakıt Tüketimi Hesaplama Fonksiyonu

Arabamın yakıt tüketimini kontrol etmeyi severim, bu yüzden yakıt aldığımda kilometreyi ve depoyu doldurmak için ne kadar yakıt gerektiğini not ederim. Burada İngiltere'de yakıt litre olarak satılmaktadır. Arabanın milometresi (tamam, bu yüzden bir kilometre sayacıdır) mesafeyi mil cinsinden kaydeder. Ve değiştiremeyecek kadar yaşlı ve aptal olduğum için sadece MPG'yi (galon başına mil) anlıyorum. Şimdi bunun biraz üzücü olduğunu düşünüyorsanız, buna ne dersiniz? Eve geldiğimde Excel'i açıyorum ve verileri benim için MPG'yi hesaplayan ve arabanın performansını gösteren bir çalışma sayfasına giriyorum. Hesaplama, aracın son dolumdan bu yana kat ettiği mil sayısının, kullanılan galon yakıt sayısına bölünmesidir…

MPG = (BU DOLDURMA MİL - SON DOLDURMA MİL) / GALON YAKIT

ama yakıt litre olarak geldiği ve bir galonda 4.546 litre olduğu için…

MPG = (BU DOLDURMA MİL - SON DOLDURMA MİL) / LİTRE YAKIT x 4.546

Fonksiyonu şu şekilde yazdım…

Fonksiyon MPG(Tamsayı Olarak StartMiles, Tam Sayı Olarak FinishMiles, Tek Olarak Litre) MPG = (FinishMiles - StartMiles) / Litre * 4.546 Bitiş Fonksiyonu

ve işte çalışma sayfasında nasıl göründüğü…

Tüm işlevler matematiksel hesaplamaları gerçekleştirmez. İşte bilgi veren biri…

Günün Adını Veren Bir Fonksiyon

Sık sık haftanın gününü metin olarak veren bir tarih işlevi olup olmadığı sorulur (örneğin Pazartesi). Cevap hayır*, ancak bir tane oluşturmak oldukça kolay. (*Ek: Hayır mı dedim? Unuttuğum işlevi görmek için aşağıdaki notu kontrol edin!). Excel, haftanın gününü 1'den 7'ye kadar bir sayı olarak döndüren WEEKDAY işlevine sahiptir. Varsayılanı (Pazar) beğenmezseniz, hangi günün 1 olduğunu seçebilirsiniz. Aşağıdaki örnekte, işlev "5" döndürüyor ve bunun "Perşembe" anlamına geldiğini biliyorum.

Ama ben bir sayı görmek istemiyorum, "Perşembe"yi görmek istiyorum. Bir yerde bir sayı listesi ve buna karşılık gelen bir gün adı listesi içeren bir tabloya atıfta bulunan bir DÜŞEYARA işlevi ekleyerek hesaplamayı değiştirebilirim. Veya birden çok iç içe IF ifadesiyle kendi kendine yeten her şeye sahip olabilirim. Çok karışık! Cevap özel bir işlevdir…

Fonksiyon DayName(InputDate As Date) Dim DayNumber As Integer DayNumber = Weekday(InputDate, vbSunday) Select Case DayNumber Case 1 DayName = "Sunday" Case 2 DayName = "Pazartesi" Case 3 DayName = "Salı" Case 4 DayName = "Çarşamba" Case 5 DayName = "Perşembe" Case 6 DayName = "Cuma" Case 7 DayName = "Cumartesi" Bitiş Seç Bitir Fonksiyonu

İşlevimi "DayName" olarak adlandırdım ve (elbette) bir tarih olması gereken "InputDate" adını verdiğim tek bir argüman alıyor. İşte nasıl çalıştığı…

  • İşlevin ilk satırı, "DayNumber" olarak adlandırdığım bir Tamsayı (yani bir tam sayı) olacak bir değişken bildirir.
  • İşlevin sonraki satırı, Excel'in WEEKDAY işlevini kullanarak bu değişkene bir değer atar. Değer 1 ile 7 arasında bir sayı olacaktır. Varsayılan değer 1=Pazar olsa da, netlik için yine de ekledim.
  • Sonunda bir Vaka Açıklaması değişkenin değerini inceler ve uygun metin parçasını döndürür.

İşte çalışma sayfasında nasıl göründüğü…

Özel İşlevlerinize Erişim

Bir çalışma kitabına özel işlevler içeren bir VBA kodu modülü eklenmişse, bu işlevler, yukarıdaki örneklerde gösterildiği gibi aynı çalışma kitabında kolayca ele alınabilir. İşlev adını, Excel'in yerleşik işlevlerinden biriymiş gibi kullanırsınız.

İşlev Sihirbazı'nda (bazen İşlev Yapıştır aracı olarak da adlandırılır) listelenen işlevleri de bulabilirsiniz. Normal yolla bir işlev eklemek için sihirbazı kullanın (Ekle > İşlev).

Bulmak için işlev kategorileri listesini aşağı kaydırın Kullanıcı tanımlı ve mevcut UDF'lerin bir listesini görmek için seçin…

Kullanıcı tanımlı işlevlerin, yardımcı olmayan "Yardım yok" mesajı dışında herhangi bir açıklaması olmadığını görebilirsiniz, ancak kısa bir açıklama ekleyebilirsiniz…

İşlevleri içeren çalışma kitabında olduğunuzdan emin olun. git Araçlar > Makro > Makrolar. Burada listelenen işlevlerinizi görmezsiniz, ancak Excel bunları bilir! İçinde Makro Adı iletişim kutusunun üst kısmındaki kutucuğa, işlevin adını yazın ve ardından iletişim kutusunun Seçenekler buton. Düğme griyse ya işlev adını yanlış yazmışsınızdır ya da yanlış çalışma kitabındasınızdır ya da işlev yoktur! Bu, işlevin kısa bir açıklamasını girebileceğiniz başka bir iletişim kutusu açar. Tıklamak Tamam açıklamayı kaydetmek ve (işte kafa karıştırıcı bit) tıklayın İptal Makro iletişim kutusunu kapatmak için İşlevi içeren çalışma kitabını kaydetmeyi unutmayın. İşlev Sihirbazı'na bir sonraki gidişinizde UDF'nizin bir açıklaması olacaktır…

Makrolar gibi, kullanıcı tanımlı işlevler, onları içeren çalışma kitabı açık olduğu sürece başka herhangi bir çalışma kitabında kullanılabilir. Ancak bunu yapmak iyi bir uygulama değildir. Fonksiyonu farklı bir çalışma kitabına girmek kolay değildir. Ana bilgisayar çalışma kitabının adını işlev adına eklemeniz gerekir. İşlev Sihirbazına güveniyorsanız, ancak elle yazmak beceriksizseniz bu zor değildir. İşlev Sihirbazı, diğer çalışma kitaplarındaki tüm UDF'lerin tam adlarını gösterir…

Fonksiyonu içeren çalışma kitabı kapalıyken fonksiyonu kullandığınız çalışma kitabını açarsanız, fonksiyonu kullandığınız hücrede bir hata mesajı görürsünüz. Excel bunu unuttu! İşlevin ana bilgisayar çalışma kitabını açın, yeniden hesaplayın ve her şey tekrar yolunda. Neyse ki daha iyi bir yol var.

Birden fazla çalışma kitabında kullanmak üzere Kullanıcı Tanımlı İşlevler yazmak istiyorsanız, en iyi yöntem bir Excel oluşturmaktır. Ekle. Bunu nasıl yapacağınızı Excel Eklentisi Oluşturma eğitiminde öğrenin.

zeyilname

Gerçekten daha iyi bilmeliyim! Asla, asla, asla deme! Günün adını veren bir fonksiyon olmadığını söyledikten sonra, yapabileni hatırladım. Şu örneğe bakın…

METİN işlevi, bir hücrenin değerini belirli bir sayı biçiminde metin olarak döndürür. Yani örnekte seçebilirdim =METİN(A1,"ddd") "Per" döndürmek için, =METİN(A1,"mmmm") "Eylül" vb. döndürmek için. Excel'in yardımında bu işlevi kullanmanın bazı yollarına ilişkin daha fazla örnek vardır.

Bloglarımızı beğendiyseniz, Facebook'ta arkadaşlarınızla paylaşın. Ayrıca bizi Twitter ve Facebook'ta da takip edebilirsiniz.
Sizden haber almayı çok isteriz, işimizi nasıl iyileştirebileceğimizi, tamamlayabileceğimizi veya yenileyebileceğimizi ve sizin için daha iyi hale getirebileceğimizi bize bildirin. bize yazın e-posta sitesi