Excel'de Makrolar - Kullanım talimatları. Excel'de Makro Nasıl Yazılır - Excel'de VBA Makroları Oluşturun, Kaydedin ve Düzenleyin

  • 08.08.2019

VBA, Microsoft uygulamaları için standart komut dosyası dili olarak kabul edilir ve artık tüm Office uygulamalarına ve hatta diğer şirketlerin uygulamalarına dahil edilmiştir. Bu nedenle, Excel için VBA'da uzmanlaştıktan sonra, diğer Microsoft yazılım ürünleri için doğrudan makro oluşturmaya geçebilirsiniz. Ayrıca, çok çeşitli uygulamaların işlevlerini aynı anda kullanan tam teşekküllü yazılım ürünleri oluşturabileceksiniz.

Excel'de makrolar nasıl etkinleştirilir

Varsayılan olarak, Excel'de makroları yönetmekten ve gezinmekten sorumlu sekme gizlidir. Bu seçeneği etkinleştirmek için sekmeye gidin Dosya gruba Seçenekler. Görüntülenen iletişim kutusunda Seçeneklermükemmel, sekmeye git Şerit kurulumu, sağ açılan kutuda, sekmenin karşısına bir işaret koyun Geliştirici. Bu adımlar, Excel 2010 ve sonraki sürümleri için geçerlidir.

Şeritte yeni bir sekme görünecek geliştirici Excel otomasyon kontrolleri ile.

Excel'de Makro Yazma

sekmesinde geliştirici grup içinde kod, düğmesine basın Makro kaydı. Bir iletişim kutusu belirecektir makro kayıt, bu, yazılmakta olan gelecekteki kod hakkında bazı bilgiler ister. İlk kez bir makro oluşturuyorsanız, düğmeyi tıklamanız yeterlidir. TAMAM. Artık Excel, veri girişi, biçimlendirme veya grafik oluşturma olsun, bir VBA modülündeki her kullanıcı eylemini yakalayacaktır. Makro kaydını durdurmak için düğmesine tıklayın. Kaydetmeyi bırak, aynı grupta olan Kod.

Düğmeyi kullanarak alternatif bir makro kayıt seçeneği de kullanabilirsiniz. makro kayıt, Excel çalışma kitabının sol alt köşesinde bulunur (durumun sağında Hazır).

Artık butona tıklayarak oluşturulan tüm makroların listesini görüntüleyebilirsiniz. Makro, bir grupta olmak Kod. Görüntülenen iletişim kutusunda, kodlarınıza daha açıklayıcı adlar verebilir veya belirli bir makroyu çalıştıracak klavye kısayolları ayarlayabilirsiniz. Bu pencereyi başlatmanın alternatif bir yolu da Alt + F8 tuşlarına basmaktır.

Makroları düzenleme

Tebrikler! İlk makronuzu yazdınız. Excel'in bizim için ne tür bir kod ürettiğini şimdi kontrol etmek mantıklı olacaktır. Oluşturulan kod VBA'da (Visual Basic for Applications) yazılmıştır. Görmek için açmanız gerekiyor. EditörVB(VBE), Alt + F11 veya düğmesine basılarak başlatılır GörselTemel sekme Geliştirici.

Düzenleyicide karışıklığı önlemek için çalışma kitabının, sayfasının veya modülün yalnızca bir sekmesiyle çalışabilirsiniz. Editörün gerçek hayatta nasıl göründüğü budur.

Bu aşamada VBA editörünün çeşitli pencerelerini ve menülerini daha ayrıntılı olarak incelemeyi öneriyorum. Bu size daha sonra çok zaman kazandıracaktır.

Kodu görüntülemek için bir şubeye tıklayın Modüller projeler penceresinde ve görünen şubeye çift tıklayın modül1 . Editör, resimde gösterildiği gibi kodu içeren bir pencere açacaktır.

Burada Excel'de çalışırken yazılan oluşturulan kodu düzenleyebilirsiniz. Örneğin, belirli bir sütunu 1'den 10'a kadar değerlerle doldurmak istediğinizi varsayalım. A sütununun ilk üç hücresine 1, 2 ve 3 değerlerini giren ilk üç adıma zaten sahipsiniz. Kalan yedi adımı eklememiz gerekiyor.

Yukarıdaki koda bakarsanız makronun belirli bir şekilde yapılandırıldığını göreceksiniz. Uygulama önce Range("A1").Select komutunu kullanarak imleci bir hücreye taşır, ardından ActiveCell.FormulaR1C1 = "1" kullanarak içeriğini düzenler. Böylece kalan adımlar için hücrenin adresini ve bu hücreye yazmak istediğiniz değeri değiştirerek bu adımları tekrarlayabiliriz. Örneğin, A4 hücresini 4'e ayarlamak için şunu yazarsınız:

Aralık("A4").Seçin
ActiveCell.FormulaR1C1 = "4"

Ve kalan değerler için aynı adımları tekrarlayın.

Düzenlemeyi bitirdikten sonra çalışma kitabını kaydedin. Makroyu F5 düğmesine basarak çalıştırabilir veya Excel çalışma kitabına dönerek sekmeye gidebilirsiniz. geliştirici gruba kod -> makrolar ve listeden ilgilendiğiniz makroyu seçin.

Excel tarafından oluşturulan kodu dikkatlice incelemek için birkaç dakikanızı ayırın. Yeni başlayan biriyseniz, kodu öğrenmek için birkaç dakika harcamak, daha sonra VBA nesnelerini tanıtmada uzun bir yol kat edecektir. Lütfen dikkate aldığımız örneğin sadece bir örnek olduğunu unutmayın. Daha sonra tartışacağımız benzer sonuçlara ulaşmanın daha hızlı ve daha verimli yolları var.

Excel makrolarının yürütme hızını artırma

Çok uzak çok iyi. Makronun yürütülmesini hızlandırmaya yardımcı olacak birkaç numaraya bakalım. Örnek olarak yukarıdaki kod parçasını düşünün. Modern bilgisayarlar, söz konusu kodu o kadar hızlı çalıştıracak ki, farkına bile varmayacaksınız. Ama ya işlemi 50.000 kez yapmanız gerekiyorsa. Biraz zaman alacak. Yazdığınız makro yüzlerce satır uzunluğundaysa, makro yürütme sırasında kullanılmayan bazı işlemleri keserek kodun yürütülmesini hızlandırabilirsiniz.

Application.ScreenUpdating komutunu kullanma

İlk hile, makro yürütülürken ekranı güncellemeyi reddetmektir. Bu, Excel'in bilgisayarın işlem gücünden tasarruf etmesine ve yalnızca tüm kod yürütüldükten sonra ekranı yeni değerlerle güncellemesine olanak tanır. Bunu yapmak için makronun başında ekran yenilemeyi devre dışı bırakmak için bir komut ve makronun sonunda ekran yenilemeyi etkinleştirmek için bir komut eklemeniz gerekir.

1
2
3
4
5
6
7
8
9
10

Alt Makro1()

Aralık("A1").Seçin

Aralık("A2").Seç

Aralık("A3").Seçin


son alt

Application.ScreenUpdating komutu, Excel'e yeniden hesaplanan verileri ekranda görüntülemeyi durdurmasını ve kod yürütmenin sonunda bitmiş değerleri döndürmesini söyler.

Uygulama komutunu kullanma Hesaplama

İkinci numara, otomatik hesaplamaları devre dışı bırakmaktır. Açıklamama izin ver. Bir kullanıcı veya işlem bir hücreyi her güncellediğinde, Excel ona bağlı olan tüm hücreleri yeniden hesaplamaya çalışır. Diyelim ki makronun güncellemeye çalıştığı hücre 10.000 diğer hücreyi etkiliyorsa, Excel kod bitmeden hepsini yeniden hesaplamaya çalışacaktır. Buna göre, çok sayıda etkileyen hücre varsa, yeniden hesaplama kod yürütmesini önemli ölçüde yavaşlatabilir. Bunun olmasını önlemek için Uygulamayı ayarlayabilirsiniz. Formül yeniden hesaplamayı manuel moda geçirecek ve ardından makronun sonunda otomatik hesaplamayı döndürecek olan kodun başında hesaplama.

1
2
3
4
5
6
7
8
9
10
11
12

Alt Makro1()
Application.ScreenUpdating = Yanlış

Aralık("A1").Seçin
ActiveCell.FormulaR1C1 = "1"
Aralık("A2").Seç
ActiveCell.FormulaR1C1 = "2"
Aralık("A3").Seçin
ActiveCell.FormulaR1C1 = "3"

Application.ScreenUpdating = Doğru
son alt

Makronun sonunda bu seçeneği tekrar otomatik olarak değiştirmeyi unutmayınız. Aksi takdirde, sekmeye tıklayarak bunu Excel'in kendisinde yapmanız gerekecektir. formüller gruba hesaplama ve Seç Hesaplama seçenekleri –> Otomatik.

Hücre seçiminden ve aralıklarından kaçının

Otomatik makro kayıt modunda, Excel'in Aralık("A1") gibi bir hücre seçim komutunu çok sık kullandığını fark edebilirsiniz. Seç. Örneğimizde, bir hücreyi seçmek ve değerini değiştirmek için bu komutu birkaç kez kullandık. Bunu basitçe hücrenin adresini belirterek ve gerekli değere ayarlayarak önleyebilirsiniz (Makro, imlecin bir hücreden diğerine hareketini kaydetti, dolayısıyla bu adımları ekledi. Ancak, gerekli değildir). Yani daha verimli bir kod şöyle görünecektir.

1
2
3
4
5
6
7
8
9
10
11

Alt Makro1()
Application.ScreenUpdating = Yanlış
Application.Calculation = xlCalculationManual
Aralık("A1").Değer = 1
Aralık("A2").Değer = 2
Aralık("A3").Değer = 3
Aralık("A4").Değer = 4
Aralık("A5").Değer = 5
Uygulama.Hesaplama = xlHesaplamaOtomatik
Application.ScreenUpdating = Doğru
son alt

Bu durumda, sadece hücreye başvurduk ve onu hiç seçmeden gerekli değeri verdik. Bu yöntem öncekinden daha hızlıdır.

Excel makro örnekleri

Aşağıda, en çok tekrarlanan görevleri otomatikleştirmenize yardımcı olacak birkaç örnek VBA kodu bulunmaktadır.

Excel'in güçlü, ancak aynı zamanda çok nadiren kullanılan, makroları kullanarak otomatik eylem dizileri oluşturma yeteneği vardır. Birçok kez tekrarlanan aynı tür görevlerle uğraşıyorsanız, bir makro ideal bir çıkış yoludur. Örneğin, standart bir şablona göre veri işleme veya belge biçimlendirme. Bu durumda, programlama dilleri bilgisine ihtiyacınız yoktur.

Bir makronun ne olduğunu ve nasıl çalıştığını zaten merak ediyor musunuz? O zaman cesurca devam edin - o zaman sizinle birlikte bir makro oluşturma sürecinin tamamını adım adım yapacağız.

Makro nedir?

Microsoft Office'teki bir makro (evet, bu işlev birçok Microsoft Office uygulamasında aynı şekilde çalışır), bir belgenin içinde saklanan bir programlama dili (VBA) kodudur. Daha açık hale getirmek için, bir Microsoft Office belgesi bir HTML sayfasıyla karşılaştırılabilir, ardından bir makro Javascript'e benzer. Javascript'in bir web sayfasındaki HTML verileriyle yapabilecekleri, bir makronun Microsoft Office belgesindeki verilerle yapabileceklerine çok benzer.

Makrolar, bir belgede istediğiniz hemen hemen her şeyi yapabilir. İşte bunlardan bazıları (çok küçük bir kısmı):

  • Stilleri ve biçimlendirmeyi uygulayın.
  • Sayısal ve metin verileriyle çeşitli işlemler gerçekleştirin.
  • Harici veri kaynakları kullanın (veritabanı dosyaları, metin belgeleri vb.)
  • Yeni bir belge oluşturun.
  • Yukarıdakilerin hepsini herhangi bir kombinasyonda yapın.

Makro oluşturma - pratik bir örnek

Örneğin, en yaygın dosyayı alalım csv. Bu, sütun ve satır başlıklarıyla 0'dan 100'e kadar sayılarla dolu basit bir 10x20 tablodur. Görevimiz, bu veri kümesini uygun şekilde biçimlendirilmiş bir tabloya dönüştürmek ve her satırda toplamlar oluşturmaktır.

Daha önce de belirtildiği gibi, bir makro, VBA programlama dilinde yazılmış bir koddur. Ancak Excel'de, şu anda yapacağımız bir satır kod yazmadan bir program oluşturabilirsiniz.

Makro oluşturmak için açın görüş(Görüntüle) > makrolar(Makrolar) > Makro Kaydet(Makro kayıt...)

Makronuza bir ad verin (boşluk yok) ve tıklayın TAMAM.

Bu andan itibaren, belgeyle ilgili TÜM eylemleriniz kaydedilir: hücrelerdeki değişiklikler, tabloda gezinme, hatta pencereyi yeniden boyutlandırma.

Excel, makro kayıt modunun iki yerde etkinleştirildiğini bildirir. İlk olarak, menüde makrolar(Makrolar) - bir dize yerine Makro Kaydet(Bir makro kaydediliyor...) satırı belirdi Kaydetmeyi bırak(Kaydetmeyi bırak).

İkincisi, Excel penceresinin sol alt köşesinde. Simge Durmak(küçük kare) makro kaydının etkinleştirildiğini gösterir. Üzerine tıklamak kaydı durduracaktır. Tersine, kayıt modu etkinleştirilmediğinde, bu konumda makro kaydını etkinleştirmek için bir simge vardır. Üzerine tıklamak, menüden kaydı açmakla aynı sonucu verecektir.

Artık makro kayıt modu etkinleştirildiğine göre görevimize geçelim. Öncelikle özet veriler için başlıklar ekleyelim.

  • =TOPLA(B2:K2) veya =TOPLA(B2:K2)
  • =ORTALAMA(B2:K2) veya =ORTALAMA(B2:K2)
  • =DAK(B2:K2) veya =DAK(B2:K2)
  • =MAKS(B2:K2) veya =MAKS(B2:K2)
  • =ORTALAMA(B2:K2) veya =ORTALAMA(B2:K2)

Şimdi formüllü hücreleri seçin ve otomatik doldurma tutamacını sürükleyerek tablomuzun tüm satırlarına kopyalayın.

Bu adımı tamamladıktan sonra, her satırın karşılık gelen toplamları olmalıdır.

Sırasıyla:

  • =TOPLA(L2:L21) veya =TOPLA(L2:L21)
  • =ORTALAMA(B2:K21) veya =ORTALAMA(B2:K21)- bu değeri hesaplamak için tablonun ilk verilerini tam olarak almak gerekir. Tek tek satırlar için ortalamaların ortalamasını alırsanız, sonuç farklı olacaktır.
  • =DAK(N2:N21) veya =DAK(N2:N21)
  • =MAKS(O2:O21) veya =MAKS(O2:O21)
  • =ORTALAMA(B2:K21) veya =ORTALAMA(B2:K21)- yukarıda belirtilen nedenle tablonun ilk verilerini kullanmayı düşünüyoruz.

Şimdi hesaplamaları bitirdiğimize göre, biraz biçimlendirme yapalım. İlk olarak, tüm hücreler için aynı veri görüntüleme biçimini ayarlayalım. Sayfadaki tüm hücreleri seçin, bunu yapmak için klavye kısayolunu kullanın Ctrl+A veya simgeye tıklayın Hepsini seç, satır ve sütun başlıklarının kesiştiği yerde bulunur. sonra tıklayın Virgül Stili(Sınırlandırılmış Biçim) sekmesi Ev(Ev).

  • Kalın yazı tipi stili.
  • Merkez hizalama.
  • Renk dolgusu.

Ve son olarak, toplamların biçimini ayarlayalım.

Sonunda nasıl görünmesi gerektiği:

Her şey size uyuyorsa, makroyu kaydetmeyi bırakın.

Tebrikler! Excel'deki ilk makronuzu kendiniz kaydettiniz.

Oluşturulan makroyu kullanmak için Excel belgesini makroları destekleyen bir formatta kaydetmemiz gerekiyor. Öncelikle oluşturduğumuz tablodaki tüm verileri silmemiz gerekiyor yani. boş bir şablon yapın. Gerçek şu ki, gelecekte bu şablonla çalışarak en yeni ve ilgili verileri ona aktaracağız.

Tüm hücreleri verilerden temizlemek için simgeye sağ tıklayın Hepsini seç Satır ve sütun başlıklarının kesişim noktasında bulunan ve içerik menüsünden öğesini seçin. Silmek(Silmek).

Şimdi, makro kayıtlı kalırken sayfamız tüm verilerden tamamen temizlendi. Çalışma kitabını, uzantıya sahip makro etkin bir Excel şablonu olarak kaydetmemiz gerekiyor. XLTM.

Önemli nokta! Dosyayı uzantıyla kaydederseniz XLTX, bu durumda makro çalışmayacaktır. Bu arada, çalışma kitabını biçimine sahip bir Excel 97-2003 şablonu olarak kaydedebilirsiniz. XLT, makroları da destekler.

Şablon kaydedildiğinde, Excel'i güvenle kapatabilirsiniz.

Excel'de Makro Çalıştırmak

Oluşturduğunuz makronun tüm olanaklarını ortaya koymadan önce, genel olarak makrolarla ilgili birkaç önemli noktaya dikkat etmekte fayda var diye düşünüyorum:

  • Makrolar zararlı olabilir.
  • Önceki paragrafı tekrar okuyun.

VBA kodu çok güçlüdür. Özellikle mevcut belgenin dışındaki dosyalar üzerinde işlem yapabilir. Örneğin, bir makro bir klasördeki herhangi bir dosyayı silebilir veya değiştirebilir. Benim dökümanlarım. Bu nedenle, yalnızca güvendiğiniz kaynaklardan gelen makroları çalıştırın ve bunlara izin verin.

Veri biçimlendirme makromuzu çalıştırmak için bu öğreticinin ilk bölümünde oluşturduğumuz şablon dosyasını açın. Standart güvenlik ayarlarınız varsa, bir dosyayı açtığınızda, tablonun üzerinde makroların devre dışı bırakıldığına dair bir uyarı ve bunları etkinleştirmek için bir düğme belirecektir. Şablonu kendimiz yaptığımız ve kendimize güvendiğimiz için düğmeye basıyoruz. İçeriği etkinleştirmek(İçerik dahil).

Sonraki adım, dosyadan en son güncellenen veri kümesini içe aktarmaktır. csv(böyle bir dosyadan yola çıkarak makromuzu oluşturduk).

Bir CSV dosyasından veri içe aktardığınızda, Excel, verileri tabloya doğru şekilde aktarmak için bazı seçenekleri ayarlamanızı isteyebilir.

İçe aktarma tamamlandığında menüye gidin makrolar(Makrolar) sekmesi görüş(Görüntüle) ve bir komut seçin Makroları Görüntüle(Makrolar).

Açılan iletişim kutusunda makromuzun adını içeren bir satır göreceğiz. FormatData. Seçin ve tıklayın Koşmak(Uygulamak).

Makro çalışmaya başladığında, tablo imlecinin hücreden hücreye atladığını göreceksiniz. Birkaç saniye sonra, bir makro kaydederken olduğu gibi verilerle aynı işlemler yapılacaktır. Her şey hazır olduğunda, tablo, yalnızca hücrelerde farklı verilerle, elle biçimlendirdiğimiz orijinal ile aynı görünmelidir.

Kaputun altına bakalım: Bir makro nasıl çalışır?

Birden fazla kez belirtildiği gibi, bir makro, bir programlama dilinde program kodudur. Uygulamalar için Visual Basic(VBA). Makro kayıt modunu açtığınızda, Excel yaptığınız her işlemi VBA yönergeleri şeklinde kaydeder. Basitçe söylemek gerekirse, Excel kodu sizin için yazar.

Bu program kodunu görmek için menüde ihtiyacınız var makrolar(Makrolar) sekmesi görüş(görüntüle) tıklayın Makroları Görüntüle(Makrolar) ve açılan iletişim kutusunda Düzenlemek(Değiştirmek).

Bir pencere açılacak Uygulamalar için Visual Basic, burada kaydettiğimiz makronun program kodunu göreceğiz. Evet doğru anladınız burada bu kodu değiştirebilir hatta yeni bir makro oluşturabilirsiniz. Bu derste tablo ile yaptığımız işlemler Excel'de otomatik makro kaydı kullanılarak kaydedilebilir. Ancak ince ayarlanmış sıra ve eylem mantığına sahip daha karmaşık makrolar, manuel programlama gerektirir.

Görevimize bir adım daha ekleyelim...

Orijinal veri dosyamızın veri.csv bazı işlemler tarafından otomatik olarak oluşturulur ve her zaman aynı yerde diskte saklanır. Örneğin, C:\Veri\veri.csv– güncellenmiş verilerle dosyanın yolu. Bu dosyayı açma ve ondan veri alma işlemi bir makroya da kaydedilebilir:

  1. Makroyu kaydettiğimiz şablon dosyasını açın - FormatData.
  2. adlı yeni bir makro oluşturun veri yükle.
  3. Makro kaydederken veri yükle dosyadan verileri içe aktar veri.csv- dersin önceki bölümünde yaptığımız gibi.
  4. İçe aktarma tamamlandığında, makroyu kaydetmeyi durdurun.
  5. Hücrelerdeki tüm verileri silin.
  6. Dosyayı makro etkin bir Excel şablonu (XLTM uzantısı) olarak kaydedin.

Böylece, bu şablonu çalıştırarak iki makroya erişebilirsiniz - biri verileri yükler, diğeri onları biçimlendirir.

Programlamaya başlamak istiyorsanız, bu iki makronun eylemlerini tek bir makroda birleştirebilirsiniz - sadece kodu kopyalayarak veri yükle kodun başına FormatData.

Aşağıdaki basit Excel makro örnekleri, Excel VBA Eğitiminde açıklanan bazı özellikleri ve teknikleri göstermektedir.

Excel Makro Örneği 1

Başlangıçta, bu prosedür Alt VBA kodunda yorum kullanımına örnek olarak verilmiştir. Ancak burada değişkenlerin nasıl bildirildiğini, Excel hücre referanslarının nasıl çalıştığını, bir döngünün kullanımını da görebilirsiniz. İçin, koşullu operatör Eğer ve bir mesaj kutusu görüntüleniyor.

"Sub yordamı, etkin çalışma sayfasının A1:A100 hücre aralığında" verilen dizeyi içeren bir hücre arar Sub Find_String(sFindText As String) Dim i As Integer "For döngüsünde kullanılan Tamsayı türünde bir tam sayı Dim iRowNumber As Integer "Sonucu depolamak için Integer türünde bir tamsayı iRowNumber = 0 "Dize bulunana kadar A1:A100 hücrelerine tek tek bakar sFindText For i = 1 ila 100 If Cells(i, 1).Value = sFindText Then " Verilen dize ile bir eşleşme bulunursa " geçerli satır numarasını kaydedin ve döngüden çıkın For iRowNumber = i Exit For End If Next i "Kullanıcıya aranan satırın bulunup bulunmadığını bir açılır pencerede bildirin" Verilen satır ise bulunursa, eşleşmenin hangi hücrede bulunduğunu belirtin iRowNumber = 0 ise MsgBox "Row" & sFindText & " bulunamadı" Else MsgBox "String " & sFindText & " A hücresinde bulundu" & iRowNumber End If End Sub

Excel Makro Örneği 2

Sonraki prosedür Alt- bir döngü kullanma örneği Yaparken. Burada ayrıca değişkenlerin nasıl bildirildiğini, Excel hücre referanslarıyla çalıştığını ve koşullu bir operatör uyguladığını da görebilirsiniz. Eğer.

"Alt prosedür, 1000'i geçmeyen Fibonacci sayılarını verir Sub Fibonacci() Dim i As Integer "Sıradaki eleman konumunu belirtmek için sayaç Dim iFib As Integer "Dim iFib_Next As Integer "Dim iFib_Next As Integer "Dim iStep As Integer" dizisinin geçerli değerini saklar Bir sonraki artışın boyutunu saklar "i ve iFib_Next değişkenlerini başlat i = 1 iFib_Next = 0 "Do While döngüsü, "geçerli Fibonacci sayısı 1000 Do While iFib_Next'i geçene kadar yürütülür"< 1000 If i = 1 Then "Особый случай для первого элемента последовательности iStep = 1 iFib = 0 Else "Сохраняем размер следующего приращения перед тем, как перезаписать "текущее значение последовательности iStep = iFib iFib = iFib_Next End If "Выводим текущее число Фибоначчи в столбце A активного рабочего листа "в строке с индексом i Cells(i, 1).Value = iFib "Вычисляем следующее число Фибоначчи и увеличиваем индекс позиции элемента на 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

Excel Makro Örneği 3

Bu prosedür Alt bir sütunun hücrelerini tarar A boş bir hücreyle karşılaşana kadar aktif sayfa. Değerler bir diziye yazılır. Bu basit Excel makrosu, dinamik dizilerle nasıl çalışılacağını ve bir döngünün nasıl kullanılacağını gösterir. kadar yap. Bu örnekte, dizi ile herhangi bir işlem yapmayacağız, ancak gerçek programlama pratiğinde, veriler diziye yazıldıktan sonra genellikle bu tür eylemler üzerlerinde gerçekleştirilir.

"Sub prosedürü, aktif sayfanın A sütununun hücre değerlerini Sub GetCellValues() Dim iRow As Integer "Geçerli satırın numarasını depola Dim dCellValues() As Double "Hücre değerlerini depolamak için bir dizi ​​iRow = 1 ReDim dCellValues(1 ila 10) "Etkin sayfanın A sütunundaki hücreler arasında yinelenene kadar Do Döngü "ve boş bir hücreyle karşılaşılıncaya kadar değerlerini bir diziye çıkarır. 1)) ReDim If UBound(dCellValues) ile "dCellValues ​​​​dizisinin yeterli boyutta olduğunu kontrol edin" dizisi 10'a kadar< iRow Then ReDim Preserve dCellValues(1 To iRow + 9) End If "Сохраняем значение текущей ячейки в массиве dCellValues dCellValues(iRow) = Cells(iRow, 1).Value iRow = iRow + 1 Loop End Sub

Excel Makro Örneği 4

Bu örnekte, prosedür Alt bir sütundan değerleri okur Açalışma kağıdı Sayfa2 ve üzerlerinde aritmetik işlemler yapar. Sonuçlar sütunun hücrelerine girilir A etkin çalışma sayfasında. Bu makro, Excel nesnelerinin kullanımını gösterir. Özellikle, prosedür kullanılır Alt nesneye sütunlar, ve bu nesneye nesne aracılığıyla nasıl erişildiğini gösterir Çalışma kağıdı. Ayrıca, aktif sayfadaki bir hücreye veya hücre aralığına atıfta bulunulduğunda, bağlantı yazarken bu sayfanın adının belirtilmesine gerek olmadığı gösterilmiştir.

"Alt prosedür, Sayfa2 çalışma sayfasının A sütunundaki değerler arasında dolaşır", her değer üzerinde aritmetik işlemler gerçekleştirir ve sonucu etkin çalışma sayfasının A sütununa yazar (Sayfa1) Sub Transfer_ColA() Dim i As Integer Dim Col As Aralık Dim dVal As Double "Çalışma sayfasının değişken Sütun A sütununa ata Sayfa 2 Set Sütun = Sayfalar("Sayfa2").Columns("A") i = 1 "Bir döngü kullanarak, sütunun hücre değerlerini şuna kadar okuyun: "boş bir hücre ile karşılaşıldı Do Kadar IsEmpty(Col.Cells(i)) "Geçerli hücrenin değeri üzerinde aritmetik işlemler gerçekleştir dVal = Col.Cells(i).Value * 3 - 1 "Aşağıdaki komut sonucu şuna yazar aktif çalışma sayfasının A sütunu bu aktif yaprak olduğundan gerek yok Hücreler(i, 1) = dVal i = i + 1 Döngü Sonu Alt

Excel Makro Örneği 5

Bu makro, bir Excel olayını dinleyen bir VBA kodu örneğini gösterir. Makronun bağlı olduğu olay, çalışma sayfasında bir hücre veya hücre aralığı her seçildiğinde gerçekleşir. Bizim durumumuzda, bir hücre seçerken B1, bir mesaj kutusu görüntülenecektir.

"Bu kod, geçerli çalışma sayfasında B1 hücresi seçiliyse bir mesaj kutusu gösterir. Private Sub Worksheet_SelectionChange(ByVal Target As Range) "Hedef.Count = 1 Ve Target.Row = 1 And Target.Column = ise B1 hücresinin seçili olup olmadığını kontrol edin. 2 Ardından "B1 hücresi seçiliyse gerekli eylemi gerçekleştirin MsgBox "B1 hücresini seçtiniz" End If End Sub

Excel Makro Örneği 6

Bu prosedürün bir örneği, operatörlerin kullanımını gösterir. Hatada ve Özet hata işleme için. Bu kod ayrıca bir dosyadan veri açma ve okuma örneğini de gösterir.

C:\Documents and Settings Sub Set_Values ​​klasöründe bulunan Data.xlsx çalışma kitabından "Sub prosedürü, A1 ve B1 hücrelerinin değerlerini Val1 ve Val2 bağımsız değişkenlerine ayarlar" Dim DataWorkbook Hatada Çalışma Kitabı Olarak Hata İşleme Git " Veri Seti DataWorkbook = Workbooks.Open("C:\Documents and Settings\Data") "Verilen çalışma kitabından Val1 ve Val2 değişkenlerine değer atama Val1 = Sheets("Sheet1 ".Cells(1, 1) Val2 = Sheets("Sheet1").Cells(1, 2) DataWorkbook.Close Exit Sub ErrorHandling: "Dosya bulunamazsa, kullanıcıdan aranan dosyayı yerleştirmesi istenir " doğru klasöre yerleştirin ve ardından makroyla devam edin MsgBox "Data.xlsx dosyası bulunamadı!" & _ "Lütfen çalışma kitabını C:\Documents and Settings'e ekleyin ve Tamam'ı tıklayın" Resume End Sub

A1 hücresinin etkin çalışma kitabındaki her sayfada vurgulanacak makro. Ayrıca ekranı hareket ettirir.

Sub A1SelectionEachSheet() Dim i As Integer Application.ScreenUpdating = False For i = 1 To Sheets.Count Sheets(i).Select ActiveWindow.ScrollColumn = 1 ActiveWindow.ScrollRow = 1 Range("a1").Sonraki Sayfaları Seç(1) .Uygulama Seçin.ScreenUpdating = True End Sub

Geçerli sayfayı belirli sayıda kopyalamak için makro. Bazı makroları test etmek için kullanışlıdır - değişiklikler yaptılar, verilerin bir kopyasında kontrol ettiler. Kopya tükendi - makroyu yeniden çalıştırın

Sub SimpleCopy() Dim i As Integer, j As Integer i = Application.InputBox("Geçerli sayfanın kopya sayısını girin") Application.ScreenUpdating = False For j = 1 To i ActiveSheet.Copy after:=Sheets(Sheets) .Count) ActiveSheet .Name = "Kopyala" & j Sonraki j Application.ScreenUpdating = True End Sub

Bir sayfada belirli bir aralıktaki başlıklara sahip sayfalar oluşturun

Sub CreateFromList() Seçim Sayfalarındaki Her Hücre İçin Aralık Olarak Hücreyi Karartın.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = cell.Value Sonraki hücre End Sub

Markros gecikmeli e-posta gönderiyor. John Walkenbach'ın Profesyonel VBA Programlama kitabından değiştirilmiş makro

Sub SendMail() OutApp'i Nesne Olarak Karartın OutMail'i Nesne Olarak Karartın OutApp = CreateObject("Outlook.Application") OutApp.Session.Logon On Error GoTo cleanup Set OutMail = OutApp.CreateItem(0) Hata On Hatasında OutMail İle Sonraki Sürdür .To = " [e-posta korumalı]" .Subject = "Satış Raporu" .Ekler.Add "C:\Test.txt" .Body = "Mesaj Gövdesi" .DeferredDeliveryTime = Değiştir(Tarih, ".", "/") & " 11:00:00 " .send ".Postayı oluşturmak ve açmak için göster Bitiş Hatası Git 0 Set OutMail = Hiçbir şey temizleme: Set OutApp = Hiçbir Şey End Sub

Nikolai Pavlov'dan biraz değiştirilmiş içindekiler makrosu.
Kitapta zaten bir İçindekiler sayfası varsa, makro onu silmenizi önerir. Değilse, bir "İçindekiler" sayfası oluşturur ve sayfa adlarıyla bağlantılar ekler

Sub TableOfContent() Dim Sheet As Worksheet Dim Cell Range Dim As Integer Application.ScreenUpdating = ActiveWorkbook ile False ActiveWorkbook'ta Her Çalışma Sayfası İçin Silinsin mi?", vbYesNo) Cevap = vbNo ise Sonra Sub'dan Çık Cevap = vbYes ise Application.DisplayAlerts = False Worksheet.Delete Application.DisplayAlerts = True End If End If End With Sheets(Array) (1)). Sayfaları Seçin. Sayfa Ekle(1).Name = ActiveWorkbook ile "İçindekiler Tablosu" ActiveWorkbook'taki Her Sayfa İçin.<>"İçindekiler" Ardından Hücreyi Ayarla = Çalışma Sayfaları(1).Hücreler(sayfa.Index, 1) .Çalışma Sayfaları(1).Köprüler.Çapa ekle:=hücre, Adres:="", AltAdres:=""" & sayfa .Name & """ & "!A1" hücresi.Formula = sayfa.Ad Sonu Eğer Sonraki sayfa Satırlarla Bitiyorsa("1:1").Delete Application.ScreenUpdating = True End Sub

VBA sihirbazlarından sayfaları sıralama. Makro, gizli sayfaları da sıralar. Kitapta yapı koruması varsa çalışmaz

Sub SORT_ALL_SHEETS() Application.ScreenUpdating = False: Application.EnableEvents = False Dim iSht As Worksheet, oDict As Object, i%, j% Set oDict = CreateObject("Scripting.Dictionary") " her sayfanın görünürlük durumunu hatırla ve yap her iSht için ActiveWorkbook.Sheets oDict.Item(iSht.Name) = iSht.Visible: iSht.Visible = ActiveWorkbook ile Sonraki True " görünür sayfaları sırala For i = 1 To .Sheets.Count - 1 For j = i + 1 .Sheets.Count If UCase(.Sheets(i).Name) > UCase(.Sheets(j).Name) Then .Sheets(j).Move Before:=.Sheets(i) Sonraki j Sonraki i End With " her sayfanın ilk görünürlük durumunu geri yükle ActiveWorkbook.Sheets'teki Her iSht için iSht.Visible = oDict.Item(iSht.Name) Sonraki Application.EnableEvents = True: Application.ScreenUpdating = True End Sub

"C:\Manager.xls" Excel dosyasının "Sayfa1" sayfasından "Alan1" ve "Alan2" sütunlarını ADODB bağlantısı aracılığıyla içe aktarın ve geçerli sayfanın A1 hücresinden başlayarak içerik ekleyin