• Çalışma kitabına hazır bir makro nasıl eklenir? Excel'de makrolar nasıl etkinleştirilir. Excel'deki Makrolar: Örnekler

    Çok az insan popüler olanın ilk versiyonunun olduğunu biliyor. Microsoft ürünü Excel 1985'te ortaya çıktı. O zamandan beri çeşitli modifikasyonlardan geçti ve dünya çapında milyonlarca kullanıcı tarafından talep görüyor. Aynı zamanda, birçok kişi bu elektronik tablo işlemcisinin yeteneklerinin yalnızca küçük bir kısmıyla çalışıyor ve Excel'de programlama becerisinin hayatlarını nasıl kolaylaştırabileceğinin farkında bile değil.

    VBA nedir?

    Excel'de programlama, bir programlama dili aracılığıyla yapılır. Visual Basic Başlangıçta en ünlü yerleşik olan Uygulama için elektronik tablo işlemcisi Microsoft'tan.

    Uzmanlar, avantajlarına karşılaştırmalı bir geliştirme kolaylığı olarak atıfta bulunur. Uygulamada görüldüğü gibi, profesyonel programlama becerisine sahip olmayan kullanıcılar bile VBA'nın temellerinde ustalaşabilir. VBA'nın özellikleri, bir ofis uygulaması ortamında bir betiğin yürütülmesini içerir.

    Programın dezavantajı, uyumlulukla ilgili problemlerdir. çeşitli versiyonlar. Bunlar, VBA program kodunun atıfta bulunduğu gerçeğinden kaynaklanmaktadır. işlevsellik, içinde bulunan Yeni sürümürün, ancak eskisinde eksik. Ayrıca, dezavantajlar, kodun değişiklikler için aşırı yüksek açıklığını içerir. bir yabancı tarafından. Yine de Microsoft Office, IBM Lotus Symphony'nin yanı sıra, kullanıcının ilk kodu şifrelemesine ve onu görüntülemek için bir parola belirlemesine olanak tanır.

    Nesneler, koleksiyonlar, özellikler ve yöntemler

    VBA ortamında çalışacak kişilerin anlaması gereken bu kavramlardır. Her şeyden önce, bir nesnenin ne olduğunu anlamanız gerekir. Excel'de bu, çalışma sayfası, çalışma kitabı, hücre ve aralıktır. Bu nesnelerin özel bir hiyerarşisi vardır, örn. birbirlerine tabidirler.

    Ana olan, en çok karşılık gelen Uygulamadır. excel programı. Sonra Çalışma Kitapları, Çalışma Sayfaları ve ayrıca Aralık gelir. Örneğin, belirli bir çalışma sayfasındaki A1 hücresine erişmek için hiyerarşiyi hesaba katan bir yol belirtmeniz gerekir.

    "Koleksiyon" kavramına gelince, bu, kayıtta ChartObjects biçiminde olan, aynı sınıfa ait bir grup nesnedir. O bireysel elemanlar da nesnelerdir.

    Bir sonraki kavram özelliklerdir. Herhangi bir nesnenin gerekli bir özelliğidir. Örneğin, Aralık için Değer veya Formüldür.

    Yöntemler, yapılması gerekenleri gösteren komutlardır. VBA'da kod yazarken, nesneden bir nokta ile ayrılmaları gerekir. Örneğin, daha sonra gösterileceği gibi, Excel'de programlama yaparken çok sık olarak Cells(1,1).Select komutu kullanılır. Bu, koordinatları olan bir hücre seçmeniz gerektiği anlamına gelir.

    Bununla birlikte, Selection.ClearContents sıklıkla kullanılır. Yürütülmesi, seçilen hücrenin içeriğini temizlemek anlamına gelir.

    nasıl başlanır

    Ardından, "Alt" ve "F11" tuş kombinasyonunu kullanmanın yeterli olduğu VB uygulamasına gitmeniz gerekir. Daha öte:

    • pencerenin üst kısmında bulunan menü çubuğunda, Excel simgesinin yanındaki simgeye tıklayın;
    • Mudule komutunu seçin;
    • resimli simgeye tıklayarak kaydedin;
    • kodun bir taslağını yazalım mı?

    Şuna benziyor:

    alt program()

    "Kodumuz

    "Kodumuz" satırının farklı bir renkle (yeşil) vurgulanacağını unutmayın.Bunun nedeni, satırın başında bir yorumun geldiğini gösteren kesme işaretidir.

    Artık istediğiniz kodu yazabilir ve kendiniz oluşturabilirsiniz. yeni araç v VBA Excel'i(aşağıdaki program örneklerine bakın). Elbette Visual Basic'in temellerine aşina olanlar için çok daha kolay olacaktır. Ancak, istenirse bunlara sahip olmayanlar bile yeterince çabuk rahatlayabileceklerdir.

    Excel'deki makrolar

    Bu ad, Visual Basic for Application dilinde yazılmış programları gizler. Bu nedenle, Excel'de programlama, makroların oluşturulmasıdır. doğru kod. Bu yetenekle Microsoft elektronik tablosu, belirli bir kullanıcının gereksinimlerine göre uyarlanarak kendi kendini geliştirir. Makro yazmak için modüllerin nasıl oluşturulacağını anladıktan sonra, düşünmeye başlayabilirsiniz. somut örnekler VBA programları Excel. En temel kodlarla başlamak en iyisidir.

    örnek 1

    Görev: Bir hücrenin içeriğinin değerini kopyalayıp diğerine yazacak bir program yazın.

    Bunun için:

    • "Görünüm" sekmesini açın;
    • "Makrolar" simgesine gidin;
    • "Makro kaydet" üzerine tıklayın;
    • açık formu doldurun.

    Basit olması için, "Makro Adı" alanına "Makro1" bırakın ve örneğin "Klavye Kısayolu" alanına hh yazın (bu, programı "Ctrl + h" blitz komutuyla çalıştırabileceğiniz anlamına gelir). Enter tuşuna basın.

    Artık makro kaydı başladığına göre, bir hücrenin içeriği diğerine kopyalanır. Orijinal simgeye dönün. "Makro kaydet" üzerine tıklayın. Bu eylem, programın sonunu işaretler.

    • tekrar "Makrolar" satırına gidin;
    • listeden "Makro 1"i seçin;
    • "Çalıştır"a tıklayın (aynı eylem "Ctrl + hh" klavye kısayolu başlatılarak tetiklenir).

    Sonuç olarak, makro kaydı sırasında gerçekleştirilen eylem gerçekleşir.

    Kodun neye benzediğini görmek mantıklı. Bunu yapmak için, "Makrolar" satırına geri dönün ve "Düzenle" veya "Giriş" düğmesini tıklayın. Sonuç olarak kendilerini bir VBA ortamında bulurlar. Aslında, makro kodunun kendisi Sub Macro1() ve End Sub satırları arasında bulunur.

    Örneğin A1 hücresinden C1 hücresine kopyalama yapıldıysa, kod satırlarından biri Aralık(“C1”) gibi görünecektir.Seç. Çeviride “Range(“C1”).Select” gibi görünüyor, yani VBA Excel'e, C1 hücresine atlıyor.

    ActiveSheet.Paste komutu, kodun aktif kısmını tamamlar. Seçilen hücrenin içeriğinin kaydedilmesi anlamına gelir ( bu durum A1) vurgulanan C1 hücresine.

    Örnek 2

    VBA döngüleri, Excel'de çeşitli makrolar oluşturmanıza yardımcı olur.

    VBA döngüleri, çeşitli makrolar oluşturmanıza yardımcı olur. Diyelim ki bir y=x + x 2 + 3x 3 - cos(x) fonksiyonu var. Programını almak için bir makro oluşturmanız gerekir. Bu sadece VBA döngüleri kullanılarak yapılabilir.

    İşlev bağımsız değişkeninin ilk ve son değerleri için x1=0 ve x2=10 alın. Ek olarak, bir sabit - argüman değiştirme adımı için değer ve sayaç için başlangıç ​​değeri - girmelisiniz.

    Tüm örnekler VBA makroları Excel dosyaları, yukarıdakiyle aynı prosedür izlenerek oluşturulur. Bu özel durumda, kod şöyle görünür:

    alt program()

    adım = 0.1

    X1 Sırasında Yap< x2 (цикл будет выполняться пока верно выражение x1 < x2)

    y=x1 + x1^2 + 3*x1^3 - Cos(x1)

    Hücreler(i, 1).Değer = x1 (x1 değeri (i,1) koordinatlı hücreye yazılır)

    Cells(i, 2).Value = y ((i,2) koordinatlı hücreye y değeri yazılır)

    i = i + 1 (sayaç aktif);

    x1 = x1 + shag (argüman, adım değeri ile değiştirilir);

    son alt.

    Bu makroyu Excel'de çalıştırmanın bir sonucu olarak, birincisi x için, ikincisi y için değerleri içeren iki sütun elde ederiz.

    Daha sonra bunların üzerine Excel'de standart olacak şekilde bir grafik oluşturulur.

    Örnek 3

    Diğer sürümlerde olduğu gibi VBA Excel 2010'da döngüleri uygulamak için önceden verilen Do While yapısıyla birlikte For kullanılır.

    Bir sütun oluşturacak bir program düşünün. Hücrelerinin her birinde, karşılık gelen satırın numarasının kareleri yazılacaktır. For yapısını kullanmak, onu bir sayaç kullanmadan çok kısa bir şekilde yazmanıza izin verecektir.

    Öncelikle yukarıda açıklandığı gibi bir makro oluşturmanız gerekir. Ardından, kodun kendisini yazıyoruz. 10 hücre için değerlerle ilgilendiğimize inanıyoruz. Kod böyle görünüyor.

    i = 1 - 10 için Sonraki

    Komut, "insan" diline "1'den 10'a kadar bir artışla tekrarla" olarak çevrilir.

    Görev, kareli bir sütun elde etmekse, örneğin, 1'den 11'e kadar olan tüm tek sayılar, o zaman şunu yazarız:

    i = 1 ila 10 için adım 1 Sonraki.

    Burada adım bir adımdır. Bu durumda ikiye eşittir. Varsayılan olarak, döngüde bu kelimenin olmaması, adımın tek olduğu anlamına gelir.

    Elde edilen sonuçlar (i,1) numaralı hücrelere kaydedilmelidir. Daha sonra döngü her başlatıldığında i'deki adım değeri kadar artışla satır numarası da otomatik olarak artacaktır. Böylece kod optimize edilecektir.

    Genel olarak, kod şöyle görünecektir:

    alt program()

    For i = 1 To 10 Adım 1 (basitçe yazabilirsiniz For i = 1 To 10)

    Hücreler(i, 1).Değer = i ^ 2

    Sonraki (bir anlamda sayaç görevi görür ve döngünün bir kez daha başlaması anlamına gelir)

    son alt.

    Makronun kaydedilmesi ve çalıştırılması dahil her şey doğru yapılırsa (yukarıdaki talimatlara bakın), her çağrıldığında bir sütun elde edilir. verilen boyut(bu durumda 10 hücreden oluşur).

    Örnek 4

    Günlük yaşamda, çoğu zaman bir duruma bağlı olarak şu veya bu kararı verme ihtiyacı vardır. VBA Excel'de onlarsız yapamazsınız. Algoritmanın sonraki seyrinin seçildiği ve başlangıçta önceden belirlenmediği program örnekleri, çoğunlukla If ... Then yapısını kullanır (için zor vakalar) Eğer … O zaman … SON Eğer.

    Dikkate almak özel durum. Koordinatları (1,1) olan hücrenin yazılması için "Excel" için bir makro oluşturmanız gerektiğini varsayalım:

    1 bağımsız değişken olumlu ise;

    bağımsız değişken null ise 0;

    -1 bağımsız değişken negatifse.

    Excel için böyle bir makronun oluşturulması başlar standart bir şekilde, "sıcak" kullanımı yoluyla Alt tuşlar ve F11. Ardından aşağıdaki kod yazılır:

    alt program()

    x= Cells(1, 1).Value (bu komut x'e (1, 1) koordinatlarındaki hücre içeriğinin değerini atar)

    Eğer x>0 ise Hücreler(1, 1).Değer = 1

    Eğer x=0 ise Hücreler(1, 1).Değer = 0

    eğer x<0 Then Cells(1, 1).Value = -1

    son alt.

    Makroyu çalıştırmak ve Excel'de bağımsız değişken için istenen değeri elde etmek kalır.

    VBA İşlevleri

    Fark etmiş olabileceğiniz gibi, Microsoft'un en ünlü elektronik tablosunda programlama yapmak o kadar da zor değil. Özellikle VBA işlevlerini kullanmayı öğrenirseniz. Toplamda, Excel ve Word'de uygulama yazmak için özel olarak oluşturulan bu programlama dilinin yaklaşık 160 işlevi vardır. Birkaç büyük gruba ayrılabilirler. Bu:

    • Matematik fonksiyonları. Bunları argümana uygulayarak kosinüs, doğal logaritma, tamsayı kısmı vb. değerlerini elde ederler.
    • finansal fonksiyonlar. Varlıkları ve Excel'de programlama kullanmaları sayesinde, muhasebe ve finansal hesaplamalar için etkili araçlar elde edebilirsiniz.
    • Dizi işleme işlevleri. Bunlar Array, IsArray; Bağlı; UBound.
    • Satır için VBA Excel işlevleri. Bu oldukça büyük bir gruptur. Örneğin, bir tamsayı bağımsız değişkenine eşit boşluk sayısına sahip bir dize oluşturmak için Space veya karakterleri ANSI koduna dönüştürmek için Asc işlevlerini içerir. Hepsi yaygın olarak kullanılır ve Excel'de satırlarla çalışmanıza izin vererek bu tablolarla çalışmayı çok daha kolaylaştıran uygulamalar oluşturur.
    • Veri türü dönüştürme işlevleri. Örneğin, CVar, bir İfade bağımsız değişkeninin değerini bir Variant veri türüne dönüştürerek döndürür.
    • Tarihlerle çalışmak için işlevler. Standart olanları önemli ölçüde genişletirler.Böylece WeekdayName işlevi, haftanın gününün adını (tam veya kısmi) numarasına göre döndürür. Zamanlayıcı daha da kullanışlıdır. Gece yarısından günün belirli bir noktasına kadar geçen saniye sayısını verir.
    • Sayısal bir bağımsız değişkeni farklı sayı sistemlerine dönüştürme işlevleri. Örneğin, Oct, bir sayının sekizlik gösterimini verir.
    • Biçimlendirme işlevleri. Bunlardan en önemlisi Biçimdir. Biçim bildiriminde verilen talimatlara göre biçimlendirilmiş bir ifadeyle Variant türünde bir değer döndürür.
    • vesaire.

    Bu işlevlerin özelliklerini ve uygulamalarını incelemek, Excel'in kapsamını önemli ölçüde genişletecektir.

    Örnek 5

    Daha karmaşık problemleri çözmeye geçelim. Örneğin:

    İşletmenin gerçek maliyet düzeyi raporunun bir kağıt belgesi verilir. Gerekli:

    • şablon bölümünü Excel elektronik tablosunu kullanarak geliştirin;
    • ilk verilerin doldurulmasını isteyecek bir VBA programı oluşturun, gerekli hesaplamaları yapın ve şablonun karşılık gelen hücrelerini bunlarla doldurun.

    Çözümlerden birini ele alalım.

    Bir şablon oluştur

    Tüm eylemler Excel'de standart bir sayfada gerçekleştirilir. Serbest hücreler, tüketici şirketin adı, maliyetlerin miktarı, seviyeleri ve ciroları ile ilgili verilerin girilmesi için ayrılmıştır. Raporun derlendiği şirket (topluluk) sayısı sabit olmadığından, sonuçlara dayalı değerlerin girilmesi için hücreler ve uzmanın tam adı önceden ayrılmamıştır. Çalışma sayfasına yeni bir ad verilir. Örneğin, "Օtchet".

    Değişkenler

    Bir şablonu otomatik olarak dolduracak bir program yazmak için gösterimi seçmelisiniz. Değişkenler için kullanılacaklar:

    • NN - tablonun geçerli satırının numarası;
    • TP ve TF - planlanan ve fiili ciro;
    • SF ve SP - fiili ve planlanan maliyet miktarı;
    • IP ve IF - planlanan ve fiili maliyet düzeyi.

    Aynı harflerle, ancak "önek" ile belirtelim, toplamın verilen sütunda birikmesi. Örneğin ItogTP, "planlanan ciro" başlıklı bir tablo sütununa atıfta bulunur.

    VBA programlama kullanarak bir problem çözme

    Tanıtılan gösterimi kullanarak, sapmalar için formüller elde ederiz. Hesaplamanın % olarak yapılması gerekiyorsa, elimizde (F - P) / P * 100 ve - (F - P) miktarı vardır.

    Bu hesaplamaların sonuçları en iyi şekilde hemen Excel elektronik tablosunun uygun hücrelerine girilebilir.

    Fiili ve tahmini toplamlar için, ItogP=ItogP + P ve ItogF=ItogF+F formülleri kullanılarak elde edilir.

    Sapmalar için, hesaplama yüzde olarak yapılıyorsa = (ItogF - ItogP) / ItogP * 100 ve toplam değer olması durumunda - (ItogF - ItogP) kullanın.

    Sonuçlar yine hemen uygun hücrelere yazılır, böylece değişkenlere atamaya gerek kalmaz.

    Oluşturulan programı çalıştırmadan önce, çalışma kitabını örneğin "Report1.xls" adı altında kaydetmeniz gerekir.

    Başlık bilgileri girildikten sonra "Raporlama tablosu oluştur" butonuna sadece 1 kez basılması yeterlidir. Dikkat edilmesi gereken başka kurallar da var. Özellikle tablodaki her aktivite için değer girildikten sonra her defasında “Satır Ekle” butonuna tıklanmalıdır. Tüm verileri girdikten sonra, "Bitir" düğmesini tıklamanız ve ardından "Excel" penceresine geçmeniz gerekir.

    Artık Excel için makroları kullanarak sorunları nasıl çözeceğinizi biliyorsunuz. Şu anda en popüler metin düzenleyicisi olan "Word" ortamında çalışmak için vba excel'i kullanma becerisi (yukarıdaki program örneklerine bakın) da gerekebilir. Özellikle, yazının en başında gösterildiği gibi yazarak veya görev tuşlarına basarak veya "Görünüm" sekmesi ve "Makrolar" simgesi aracılığıyla metin üzerinde birçok işlemin gerçekleştirilebildiği kod yazarak menü düğmeleri oluşturabilirsiniz.

    Programlamada güçlü değilseniz, ancak aynı zamanda bazılarını uygulamanız gerekir.MS Excel'in standart işlevlerinin ve komutlarının ötesine geçen bir görev için internette bir çözüm arayabilirsiniz. Çözümü büyük olasılıkla çalışma kitabınıza kopyalayıp yapıştırmanız gereken VBA kodu şeklinde, sonra bir şekilde bu kodun işinize yaramasını sağlayın, bu yazıda size nasıl yapacağınızı anlatacağım.

    İki örnek düşünün:

    1. Takım aramak ve kullanmak

    Örneğin, seçilen hücrelere "1" sayısını ekleyecek bir komuta ihtiyacımız var. Arama motorunu başlatıyoruz, arama ifadesini yazıyoruz, sonuçları alıyoruz, göz atmaya başlıyoruz, kodu şuna benzer bir şekilde buluyoruz:

    Alt Ekle1() Dim q Nesne Olarak Hatada Sonraki Kümeyi Sürdür q = Seçimdeki Her q İçin Hücreler q = 1 Sonraki q Son Alt

    Bu kodu seçin (satır numarası olmadan, kelime ile başlayarak Alt) ve bas ctrl+c. MS Excel çalışma kitabınıza gidin ve klavye kısayoluna basın alt+F11, açık bir VBA düzenleyici pencereniz olacak:

    "Project - VBA Project" sol penceresinde, örneğin "VBAProject (Book2)" gibi bir makro eklemek istediğiniz çalışma kitabımızı seçin (tıklayın):

    "Ekle" menü öğesinde "Modül"ü seçin:

    "Project - VBA Project" sol penceresinde yeni bir "Modüller" klasörü ve içinde yeni bir "Module1" nesnesi olmalıdır:

    İmleci sağdaki "Büyük" giriş alanına getirin ve tuşuna basın. ctrl+v, kopyalanan makro modüle yapıştırılır:

    MS Excel'deki makrolar aşağıdaki yerlere eklenebilir:

    • Modülde, genellikle kullanıcı tarafından bir düğmeye basılarak başlatılacak olan makro kodunu (örneğin, bizim durumumuzda olduğu gibi) veya işlev kodunu (formüller) eklerler;
    • Çalışma Sayfasına genellikle, kullanıcının eylemlerine veya sayfadaki verilerdeki değişikliklere (veriler değişti, makro yürütüldü) bağlı olarak başlatılması otomatik olarak gerçekleşmesi gereken makroların kodunu eklerler;
    • Çalışma Kitabına genellikle, kitapta (dosya) gerçekleştirilen eylemlere bağlı olarak başlatılması otomatik olarak gerçekleşmesi gereken makroların kodunu eklerler. Örneğin, bir çalışma kitabı açıldığında veya kapatıldığında veya kaydedildiğinde çalışan bir makro;
    • Makrolar ayrıca bir kullanıcı formunun parçası olabilir.

    Genellikle, kodu yayınlayan kişi, kodun bir modüle, bir sayfaya veya bir çalışma kitabına eklenmesi gerektiğini belirtir.

    Bir çalışma sayfasına kod eklemek için, VBA editörünün sol penceresinde ilgili sayfayı seçin, sol fare tuşuyla üzerine çift tıklayın, imleci sağ giriş alanına getirin ve kodu yapıştırın.

    Bir Kitaba kod eklemek için "Bu Kitap"ı seçin:


    Hadi pratik yapalım. Aşağıdaki kodu "Sayfa1" e yapıştırın.

    Özel Alt Worksheet_Change(ByVal Target As Range) Hatada GoTo a If Target = 2 Sonra VBA.MsgBox("Cell " & Target.Address & " = 2") End If a: Exit Sub End Sub

    Sayfanın herhangi bir hücresine "2" girerseniz, bu makro bir bilgi mesajı görüntüler.

    Çalışma kitabına dönün, "Sayfa1"e gidin ve "A1" hücresine "2" sayısını girin ve tuşuna basın. Girmek, ardından aşağıdaki mesajı görmelisiniz:

    Bu mesajı görürseniz, her şeyi doğru yaptınız demektir. Değilse, kodu yanlış yere yapıştırdınız, tekrar deneyin.

    Kodu yapıştırırken nereye yapıştırdığınıza dikkat etmelisiniz. Bu, VBA editör penceresinin başlığında yazılanlara bakılarak yapılabilir:

    2. Bir işlev aramak ve kullanmak

    İnternette, örneğin bir hücredeki sözcük sayısını sayan bir işlevin VBA kodunu buluyoruz:

    Genel İşlev CountWordsInCell(Cell As Range) Dim q As Variant Application.Volatile q = VBA.Split(Application.WorksheetFunction.Trim(Cell.Value), " ") CountWordsInCell = UBound(q) + 1 End Function

    Kodu kopyalayın, klavye kısayoluna basın alt+F11, VBA editörü açılır:


    Kitabımıza yeni bir modül ekliyoruz ve kopyaladığımız kodu bu modüle yapıştırıyoruz:


    VBA düzenleyicisini kapatın ve çalışma kitabınıza gidin. Hücrede yeni bir sayfa (isteğe bağlı) oluşturun A1"anne çerçeveyi yıkadı" metnini girin. Sonucu (kelime sayısı) almak istediğimiz hücrede duruyoruz, "Formüller" menüsünde "İşlev Ekle" düğmesini tıklayın:

    Açılan "Fonksiyon ekle" penceresinde "Kategori" alanında "Kullanıcı tanımlı"yı seçin

    Kullanılabilir işlevler listesinde "Hücredeki sözcük sayısı"nı seçin, "Tamam"a tıklayın:

    Gerekli bağımsız değişkenleri girin ve "Tamam"a tıklayın:

    Sonucu elde ederiz:

    Önemli:

    Makroyu eklediğiniz çalışma kitabını "Makro özellikli çalışma kitabı" olarak kaydetmezseniz, makro içeren tüm modüller silinecek ve tüm bu çalışmaları daha sonra yeniden yapmanız gerekecektir.

    Bir modüle makro eklerken bazı metinler yerine kırmızı işaretler görüyorsanız " ???????? "

    Bu, bazı tarayıcılardan Kiril metni kopyalarken gözlemlenen bir kodlama sorununuz olduğu anlamına gelir. Bu sorunun üstesinden gelmek için, kopyalanan kodu boş bir MS Excel sayfasına "Unicode Metin" olarak yapıştırmayı deneyin. Bunu yapmak için MS Excel çalışma kitabına gidin, boş bir sayfa seçin veya oluşturun, "A1" hücresinde durun ve klavye kısayollarına basın Ctrl+Alt+V. "Özel Yapıştır" menüsü görünmelidir, "Unicode Metin"i seçin ve "Tamam"a tıklayın.

    Kodun çalışma sayfasına soru işaretleri olmadan yapıştırılması gerekir:

    Bundan sonra, sayfaya yapıştırılan kodu bir kez daha kopyalayın ve modüle yapıştırın.

    VBA editöründe "Project - VBA Project" penceresini görmüyorsanız, "View" menü sekmesine gidin ve listeden "Project Explorer" öğesini seçin veya klavye kısayoluna basın ctrl+r:

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

    Sub A1SelectionEachSheet() Dim i Tamsayı Olarak Uygulama.ScreenUpdating = False For i = 1 To Sheets.Count Sheets(i).Select ActiveWindow.ScrollColumn = 1 ActiveWindow.ScrollRow = 1 Range("a1").Select Next Sheets(1).Select Application.ScreenUpdating = True End Sub

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

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

    Bir sayfada belirli bir aralıktan başlıkları olan sayfalar oluşturun

    Sub CreateFromList() Hücreyi Seçim Sayfalarındaki Her Hücre İçin Aralık Olarak Karart.Sonra Ekle:=Sayfalar(Sayfalar.Sayı) ActiveSheet.Name = cell.Value Sonraki hücre

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

    Sub Dispatch() Nesne Olarak OutApp'i Dim Dim OutMail As Object Set OutApp = CreateObject("Outlook.Application") OutApp.Session.Logon Hata Halinde GoTo temizleme Set OutMail = OutApp.CreateItem(0) Hata Durumunda Devam Et Sonraki OutMail .To = " [e-posta korumalı]" .Subject = "Satış raporu" .Ekler.Add "C:\Test.txt" .Body = "Message text" .DeferredDeliveryTime = replace(Date, ".", "/") & " 11:00:00" .send ".E-postayı oluşturmak ve açmak için görüntüleyin.

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

    Sub TableOfContent() Dim sayfası Çalışma Sayfası Olarak Dim hücre Aralık Olarak Dim Tamsayı Olarak Yanıt Application.ScreenUpdating = ActiveWorkbook ile False ActiveWorkbook.Worksheets'teki Her Çalışma Sayfası İçin If Worksheet.Name = "İçindekiler" Sonra Cevap = MsgBox("Çalışma sayfasında İçindekiler adlı bir sayfa var. Silmek istiyor musunuz?", vbYesNo) Cevap = vbNo ise Çıkış Sub Eğer Cevap = vbEvet Sonra Application.DisplayAler ts = Yanlış Çalışma sayfası.Delete Application.DisplayAlerts = True End If End If Next If With Sheets(Array(1)).Select Sheets.Add Sheets(1).Name = ActiveWorkbook'taki Her Sayfa İçin ActiveWorkbook ile "Tablolar".Worksheets If Sheet.Name<>"İçindekiler" Sonra Set cell = Worksheets(1).Cells(sheet.Index, 1) .Worksheets(1).Hyperlinks.Add çapa:=cell, Address:="", SubAddress:=""" & Sheet.Name & """ & "!A1" cell.Formula = Sheet.Name End If Next Sheet End With Rows("1:1").Delete Application.ScreenUpdating = True End Sub

    Sayfaları VBA sihirbazlarından sıralama. Makro, gizli sayfaları da sıralar. Kitabın 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 bir sayfanın görünürlük durumunu depolar ve ActiveWorkbook'ta Her iSht için hepsini görünür yapar.Sheets oDict.Item(iSht.Name) = iSh t.Visible: i Sht.Visible = True Next With ActiveWorkbook " görünür sayfaları sırala For i = 1 To .Sheets.Count - 1 For j = i + 1 To .Sheets.Count If UCase(.Sheets(i).Name) > UCase(.Sheets(j).Name) Sonra .Sheets(j).Move Before:=.Sheets(i) Sonraki j Sonraki i Bitir " ActiveWorkbook.Sheets iSht'deki Her iSht için her sayfanın ilk görünürlüğünü geri yükle. 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 mevcut sayfanın A1 hücresinden başlayarak içeriği ekleyin

    Excel elektronik tabloları, bilgileri depolamanın ve düzenlemenin en popüler yollarından biridir. Makroları Excel'de uygularsanız, programın yetenekleri neredeyse iki katına çıkarılabilir. Örneğin, makrolar rutin işlemleri otomatikleştirmeye ve monoton işleri hızlandırmaya yardımcı olur. Genellikle raporları 1C'den Excel'e çeviren uzmanlar tarafından kullanılırlar. Gömülü kodun yardımıyla bunları tek bir standart şablona getirmek kolaydır.

    Excel makroları nedir?

    Makrolar yalnızca elektronik tablolarda değil, Microsoft Office genelinde kullanılır. Visual Basic for Applications kullanılarak oluşturulan kodlardır. Web programlamaya kısmen aşina iseniz, Javascript ile bir analoji çizebilirsiniz. Excel makroları, Javascript'in HTML verileriyle yaptığı hemen hemen aynı şeyi yapar.

    Bir makronun ofis uygulamalarında yapabileceklerinin küçük bir kısmı:

    Belgeyi stile göre hizalayın ve biçimlendirin;
    . sayısal ve metinsel verilerle işlemler gerçekleştirmek;
    . harici dosyaların (metin, veritabanları ve diğerleri) yardımına başvurmak;
    . sıfırdan yeni belgeler oluşturun;
    . birkaç eylemi birleştirin ve bunları otomatik olarak gerçekleştirin.

    Tabloyla çalışmak için kendiniz oluşturabilir veya internetten hazır bir sürümünü indirebilirsiniz. Makroları yalnızca güvenilir sitelerden indirmeniz gerekir, aksi takdirde Excel'e virüs bulaştırabilirsiniz.

    Excel'deki makroların tehlikeleri nelerdir?

    PC'deki bozuk dosyalar;
    . gizli verileri çalmak.

    Virüsün girişi, ofis uygulamalarından birinin - Word veya Excel - çalışması sırasında gerçekleşir. Siz çalışmayı bıraktıktan sonra virüs, bunların içinde otonom olarak çalışmaya ve tüm sisteme bulaşmaya başlayacaktır.

    Kötü niyetli bir makronun çalışmasının başka bir yolu da, sisteme tehditler enjekte etmeye aracılık etmektir. Bu durumda, Trojan yazılımının tanıtılması ve üretilmesi için bir tür ağ geçididir. Artık değiştirilmiş bir makro tarafından değil, işletim sisteminin kendisi tarafından kontrol edilecek ve bu nedenle tehdit daha yaygın hale geliyor. Bu tür virüsleri iyileştirmek her zaman mümkün değildir, bazen Windows OC'yi veya PC sabit sürücüsünü tamamen değiştirmeniz gerekir (korsanın kodu yazarken belirlediği görevlere bağlı olarak).

    Bu tür makrolara karşı herhangi bir koruma yöntemi seçebilirsiniz. Excel'in güvenlik düzeyini artırmak en popüler olanıdır, ancak bu durumda program artık yazarınızın yararlı makrolarını desteklemeyebilir. Bilinmeyen kaynaklardan gelen dosyalara virüs bulaşmış olabileceğinden güvenmeyin. İş arkadaşınızın bilgisayarından alınan bir makro bile tehlikelerle dolu olabilir. Bir arkadaşınız size çalışmak için makro kullanımını destekleyen bir dosya verdiyse, sistemin onu kullanmasına izin vermeden önce, bu makroyu nasıl aldığını belirtin.

    En iyi seçenek, ihtiyaçlarınız için makro oluşturma sanatını kendi kendinize öğrenmektir. Bu durumda, kaliteleri ve güvenlikleri için tamamen kefil olabilirsiniz.

    Excel'de makrolar nasıl kaydedilir?

    Makro oluşturmanın en kolay yolu, doğrudan Excel'de programlamaktır. Bunu yapmak için, girilen verileri içeren bir tabloya ve bu kodun programa kaydedilmesini sağlamak için biraz bilgiye ihtiyacınız olacak.

    Oluşturma "Görünüm" menüsü ile başlar. İçinde "Makrolar" konumunu ve "Makro Kaydet" komutunu seçmeniz gerekir. Ardından, boşluksuz bir ad belirtmeniz gerekir, örneğin, "Biçim" (kod, metin veya hücrelerin biçimini değiştirmekten sorumlu olacaksa).

    Bundan sonra, tüm eylemleriniz otomatik olarak kaydedilecek ve makro koda dönüştürülecektir. Belgenin altında, üzerine tıklayarak kaydı durdurabileceğiniz küçük kareli bir düğme ("Durdur") görünecektir. Böylece, örneklerini öğrenme sürecinde daha sonra analiz edebileceğiniz makroları otomatik olarak Excel'e kaydedebilirsiniz.

    Excel'de makrolar nasıl etkinleştirilir

    Kaydedilmiş bir makroyu diğer belgelere dahil etmek için tabloyu temizledikten sonra kaydetmeniz gerekir. Belge formatı XLTM olarak ayarlanmalıdır (makroları destekler).

    Belgeye bir sonraki erişiminizde, Excel'de makroları etkinleştirmek için önce açılır üst çubukta kullanımlarını etkinleştirmeniz gerekir. Ardından, makro tarafından düzenlenecek verileri normal bir CSV tablosundan içe aktarmanız gerekir. İçe aktarma işleminin sonunda tekrar "Görünüm" menüsüne gitmeli, orada "Makrolar" ı seçmeli ve listede yaptığınız kodun adını bulmalısınız. Sonunda, "Çalıştır" düğmesini tıklayın. Bundan sonra, programın daha önce belirttiğiniz algoritmaya göre nasıl hesaplamalar yaptığını ve belgeyi biçimlendirdiğini göreceksiniz.

    Bir makronun program kodunu nasıl görebilirim?

    Excel'de oluşturulan tüm makrolar, insan müdahalesi olmadan otomatik olarak yazılır. Program, menü kullanılarak çağrılarak tablodan açılabilen bir program kodunu bağımsız olarak derler.

    Bunu yapmak için, komutları sırayla uygulamanız gerekir:

    "Görünüm" sekmesini genişletin;
    . "Makroları" açın;
    . gerekli makronun adını seçin;
    . "Değiştir" düğmesini kullanarak koduyla birlikte bir pencere çağırın.

    Yeni iletişim kutusunda makroyu düzenleyebilir ve değiştirebilirsiniz. Orada programın otomatik olarak kaydettiği kodu göreceksiniz ve herhangi bir eylemi manuel olarak ekleyebilirsiniz. Bilgileri kaydettikten sonra, yeni verileri içe aktarırken makro farklı çalışacaktır.

    Bir hücre tıklamasında makro nasıl başlatılır

    A1 hücresi seçildiğinde makronun çalışmasını istediğinizi varsayalım. Excel'de seçilen hücrenin makroyu çalıştırabilmesi için program kodunu ilk modüle eklemeniz gerekir:

    Özel Alt Worksheet_SelectionChange(Aralık Olarak Hedefe Göre)
    Target.Address = "$A$1" ise: Module1'i çağırın
    son alt

    Excel eğitiminde makroları öğrenmenize yardımcı olmanın en iyi yolu. Böyle birden fazla örnek var ve tablonun tüm olanaklarını yeni tanıyanlar için, işlevselliğini tam olarak kullanmayı öğrenmenin en iyi yolu bu.

    Makrolarla çalışmayı nereden öğrenebilirim?

    Daha karmaşık makroların nasıl oluşturulacağını öğrenmenin birkaç yolu vardır. Mantık ve açıkça yapılandırılmış bir eylem dizisi bakımından farklılık göstermelidirler. Bu tür makrolar yalnızca VBA kodunun manuel olarak yazılmasıyla oluşturulur. Karmaşık makrolar oluşturmak için Visual Basic programlama dilinin inceliklerini öğrenmek için biraz zaman harcamanız gerekecek.

    Şimdi, Excel'in tüm olanaklarını incelemek için, son birkaç haftadır birçok özel kurs oluşturuldu, ancak bunlara katılmak için bir eğitim merkezine gitmeniz veya web seminerlerine katılmanız gerekecek (bu, zaman farkından dolayı her zaman uygun değildir). Ancak Excel'de makro oluşturmayı öğrenmenin daha etkili ve kolay bir yolu, örnekler içeren bir eğitimdir. İstediğiniz zaman pratik yapabilirsiniz ve adım adım öğreticiler, en basit kodlardan en karmaşık kodlara kadar farklı seçenekler geliştirmenize yardımcı olacaktır. Microsoft Excel birçok karmaşık görevi çözebileceğiniz evrensel bir elektronik tablo düzenleyicisidir.

    örnekler

    Çeşitli görevleri otomatikleştirmenize izin veren kodlar vardır. Örnek olarak, satır ekleme makrosunu ele alalım. Şuna benziyor:

    Alt Makro1()

    Bu siteyi Excel'in kullanışlı özellikleri üzerine bir not defteri olarak oluşturmaya başladım. İstediğiniz zaman siteye giderek programın belirli bir özelliği hakkındaki bilginizi tazeleyebilir, ayrıca Excel konusunda yardım isteyen arkadaşlarınıza veya iş arkadaşlarınıza makalenin bağlantısını gönderebilirsiniz. Sitenin kitlesi oldukça hızlı büyüdü ve gördüğüm kadarıyla kaydedilen bilgiler sadece benim ve birkaç kişi için değil, tanımadığım birçok kişi için de yararlı ve arama motorları tarafından yüksek puan alıyor. Excel'in yetenekleri açısından kendimden eminsem, kendime VBA'da çok üst düzey bir uzman diyemem. Bu nedenle, sıklıkla kullandığım faydalı makroları yazacağım geniş bir yardımcı makale oluşturmak istiyorum. Böyle bir VBA özellikleri koleksiyonunun sadece benim için yararlı olmayacağından eminim.

    Sitede zaten VBA hakkında birkaç makale var, ancak sık kullanılan birçok kodu tek bir yerde tutmanın yararlı olacağını düşünüyorum.

    Basit bir işlevle ekranda makro eylemlerinin görüntülenmesini kapatın. Bu, yürütmeyi görsel olarak iyileştirmekle kalmayacak, aynı zamanda makronun çok daha hızlı çalışmasını sağlayacaktır.

    Alt Makros1() Application.ScreenUpdating = 0 "Kodunuz Application.ScreenUpdating = 1 End Sub

    Makronun sonuna işlevi eklemeyi unutmayın

    Makro yürütme işleminden sonra kopya seçimi nasıl kaldırılır?

    Makronuzda kopyalama ve yapıştırma için bir aralık ayırırsanız. Makronun sonunda seçimi devre dışı bırakmayı unutmayın.

    Alt Makros1() "Kodunuz Application.CutCopyMode = 0 End Sub

    Kullanışlı makrolar Bir aralığın son satırı veya sütunu nasıl bulunur?

    Bu yapı, doldurulmuş aralığın son satırının veya sütununun numarasını kolayca bulmanıza yardımcı olacaktır. Döngülerde kullanmak özellikle uygundur, döngünün 1000 satırını bir kenar boşluğu ile ayarlamanıza gerek yoktur, Excel bu yapıyı kullanarak aralığın sonunun nerede olduğunu bulacaktır:

    Alt makros1() Dim mLastRow As Long Dim nLastCol As Long mLastRow = Cells(Rows.Count, 1).End(xlUp).Row "Dolu bir aralığın son satırının numarasını bulur nLastCol= Cells(1, Columns.Count).End(xlToLeft).Column "Bir aralığın son dolu sütununun numarasını bulur End Sub

    Ayrıca popüler Integer'ın büyük tablolar için yeterli gelmeyebileceği (32 767) durumuna düşmemek için değişkeni hemen Long (uzunluk 2 147 483 647) olarak bildiriyorum.

    Ayrıca aramanın ilk sütunda veya ilk satırda olmasına dikkat etmeli, doğru tanım için istediğiniz sayıyı seçiniz.

    Döngü ve koşul kontrolü için döngü

    Aralıkların son satır ve sütun numaralarını bulduysanız bunları döngülerde kullanabilirsiniz. Örneğin, ilk sütunu gözden geçirmeniz ve boş hücrelerin sayısını saymanız gerekir.

    Alt makros1() Application.ScreenUpdating = 0 Dim mLastRow As Long Dim Kol As Long "Count Variable Dim i As Long "Döngü Değişkeni mLastRow = Cells(Rows.Count, 1).End(xlUp).Row Kol = 0 For i = 1 To mLastRow If Cells(i, 1).Value = "" Sonra Kol = Kol + 1 End If Next i MsgBox Kol Uygulama .Ekran Güncellemesi = 1 Son Abone

    Msgbox burada da kullanılmaktadır, bu özellik sayesinde verileri ayrı bir pencerede görüntüleyebilirsiniz. Örneğim için şöyle görünecek:

    Makro Yürütme Süresini Sayma

    Alt makros1() TimeStart = Şimdi TimeFinish = Şimdi MsgBox "Zaman: " & Format(TimeFinish - TimeStart, "s:dd:ss") End Sub

    MsgBox aşağıdaki sonucu verir:

    Sonraki optimizasyon için makroların yürütme süresini izlemek çok uygundur.

    Bunlar benim çok sık kullandığım kullanışlı makrolardır. Yavaş yavaş bu listeyi genişleteceğim. Tüm etkili otomasyon!

    Makalemizi sosyal ağlarınızda paylaşın: