Excel Başlığını Değiştirmek İçin Olay Makrosu - Excel İpuçları

İçindekiler

Missouri'den Donna sordu:

Üstbilgide veya altbilgide veya belgenin herhangi bir yerinde belirtilen belgenin dosyalandığı yolu nasıl elde edebileceğim konusunda herhangi bir fikriniz var mı? Dosya adını & f ile alabilirim, ancak yolu nasıl yapacağımı çözemiyorum.

Öncelikle Microsoft'un bu işlevi Excel XP'ye eklediğini anlıyorum ve sıkça sorulan bir sorun olduğu için onlara tebrikler sunuyorum. Office XP'ye zaten yükseltmiş olan herhangi bir okuyucu, bu sorunu çözmek için bu haftanın ipucundaki tekniklere ihtiyaç duymayacaktır, ancak diğer sorunları çözmek için yine de yararlı olacaktır.

Bu ipucunun çözümü, olay işleyici makrosu adı verilen özel bir makro türüdür. Çalışma kitabımızı yazdırmak üzere olduğu her seferinde kısaca Excel'in kontrolünü ele alacağız ve mevcut yolu başlığa ekleyeceğiz.

Birçok Excel kullanıcısı, basit makroları kaydetme konusunda ustaca çalıştı. Makrolar, Module1 veya Module2 adlı bir modülde saklanır ve projenizin bir parçası olur. Bugün, olay işleyici makrolarını tartışacağım. Bu makrolar, her çalışma sayfası veya çalışma kitabıyla ilişkili özel bir kod modülünde bulunur.

İki Nokta Olmadan Excel Zamanını Girin ipucu gibi eski ipuçları, Worksheet_Change olayını ele almıştır. Bugünün ipucu, Çalışma Kitabının BeforePrint olayına bazı kodlar eklememizi gerektirir.

Bir olaya eklenen kod, o olay "tetiklendiğinde" çalıştırılacaktır. Bu durumda, Excel çalışma kitabı her yazdırıldığında, yazdırma başlamadan önce, Excel kontrolü VBA koduna devreder ve VBA kodunda belirleyebileceğiniz her şeyin yazdırmadan önce otomatik olarak gerçekleşmesine izin verir.

Olay işleyici makrolarında yeni olduğunuzu varsayacağım. Bu makroya girmek için doğru yere nasıl gideceğimi tam olarak inceleyeceğim.

"Tip055 Sample.xls" adlı bir çalışma kitabım var. Excel'de yüklenen çalışma kitabıyla, görsel temel düzenleyiciye başlamak için alt = "" + F11 tuşlarına basacağım. Düzenleyicinin varsayılan görünümü sağda gösterildiği gibidir. Solda, genellikle Özellikler bölmesinin üstüne yığılmış bir Proje bölmesi görürsünüz. Ekranın sağ tarafının çoğu bir Kod Bölmesi içerir. Çalışma kitabınızda makro yoksa, kod bölmeniz sağda gösterildiği gibi gri olacaktır.

Üç bölmeyi tanımlamak için resme mavi italik yazı sözcükleri ekledim - bunları örneğinizde görmeyeceksiniz.

Proje Bölmesini VB düzenleyicide görebilmeniz önemlidir. VB düzenleyici görünümünüz proje bölmesini içermiyorsa, Proje Bölmesini görüntülemek için Ctrl + R tuşlarına basın. Veya aşağıda gösterilen araç çubuğu simgesini tıklayın:

Proje bölmesi, her açık Excel çalışma kitabı ve yüklü her Eklenti için bir proje gösterecektir. Çalışma kitabınızın projesini genişletmek için çalışma kitabınızın adının yanındaki gri artı işaretine tıklayın. Ardından, nesne klasörünü genişletmek için Microsoft Excel Nesneleri klasörünün yanındaki gri artı işaretine tıklayın. Şimdi her çalışma sayfası için bir girdi ve ThisWorkbook adlı bir girdi görmelisiniz.

ThisWorkbook için girişe sağ tıklayın ve açılır menüden Kodu Görüntüle'yi seçin.

Şimdi muhtemelen ekranın sağ tarafını kaplayan büyük bir boş beyaz kod bölmeniz olacaktır. Kod bölmesinin üstünde (Genel) ve (Bildirimler) yazan iki açılır menü vardır.

  • Sol açılır menüden Çalışma Kitabı'nı seçin.
  • Sağdaki açılır menü artık çalışma kitabıyla ilişkili tüm programlanabilir olaylarla doldurulur. Burada çalışma kitabı her açıldığında, etkinleştirildiğinde, devre dışı bırakıldığında vb. Kod çalıştıracak olaylar vardır. Bugün, BeforePrint olayında kod yazmak istiyoruz, bu nedenle sağdaki açılır menüden BeforePrint'i seçin.

Sağ açılır listeden bir şey seçtiğinizde, VBA düzenleyicisinin kodun başlangıç ​​ve bitiş satırını sizin için kod modülüne yazdığını unutmayın. Soldaki açılır listeyi Çalışma Kitabı olarak ilk değiştirdiğinizde, muhtemelen varsayılan olarak bir Çalışma Kitabı_Aç alt yordamının başlangıçlarını almışsınızdır. Bir Workbook_Open prosedürü yazmayacaksanız, bu boş prosedürü silmeyi düşünmelisiniz.

Şimdi, VBA kodunu yazmaya geçelim. Kullanabileceğiniz birkaç faydalı değişken vardır.

  • ActiveWorkbook.Path, çalışma kitabının yolunu döndürür. "C: Belgelerim MrExcel" gibi görünebilir.
  • ActiveWorkbook.FullName, çalışma kitabının yolunu ve dosya adını döndürür. "C: Belgelerim MrExcel Tip055 Sample.xls" gibi görünebilir.

Bu değişkeni aşağıdaki 6 konumdan birine atayabilirsiniz:

Worksheets("Sheet1").PageSetup.LeftHeader = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.CenterHeader = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.RightHeader = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.LeftFooter = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.CenterFooter = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.RightFooter = ActiveWorkbook.FullName

İşte olası üç örnek makro.

Bu makro, etkin çalışma sayfasının sağ altbilgisi olarak eklenen yol ve dosya adına sahip olacaktır:

Private Sub Workbook_BeforePrint(Cancel As Boolean) ActiveSheet.PageSetup.RightFooter = ActiveWorkbook.FullName End Sub

Bu makronun yolu, Sayfa1'in sol üstbilgisi ve Sayfa2'nin orta altbilgisi olarak eklenecektir:

Private Sub Workbook_BeforePrint(Cancel As Boolean) Worksheets("Sheet1").PageSetup.LeftHeader = ActiveWorkbook.Path Worksheets("Sheet2").PageSetup.CenterFooter = ActiveWorkbook.Path End Sub

Yazdırırken "Tüm Çalışma Kitabı" seçeneğini kullanma eğilimindeyseniz, bu sürüm tam adı tüm sayfalara orta altbilgi olarak ekleyecektir:

Private Sub Workbook_BeforePrint(Cancel As Boolean) For Each Sh In ActiveWorkbook.Worksheets Sh.PageSetup.CenterFooter = ActiveWorkbook.FullName Next Sh End Sub

Bu örneklerden birini izleyin veya kendinizinkini yaratın. Bitirdiğinizde, Dosya> Kapat ve Microsoft Excel'e Dön ile VBA düzenleyicisini kapatın.

Bir çalışma sayfasını her yazdırdığınızda, kod çalışır ve geçerli yolu VBA kodunda belirttiğiniz uygun üstbilgi veya altbilgiye ekler.

Bazı notlar ve uyarılar:

  • Acemi Excel kullanıcıları, bu kodun çalışma kitabında olduğuna dair çok az fikre sahip olacaklar. Çalışma kitabını açtıklarında, dosyanın makro içerdiğine dair güvenlik uyarısı alabilirler, ancak VBA kodu merkez altbilgi olarak sahip oldukları her şeyi attığında ve yol adını oraya koyduğunda hiçbir uyarı olmayacaktır. Bu mide ekşimesine neden olabilir. Bundan 5 yıl sonra birinin çalışma kitabınızı kullandığını ve yeni yöneticinin dosya adının orta altbilgiden sağ altbilgiye taşınmasını istediğini hayal edin. Bu kişi, Dosya> Sayfa Kurulumu'ndaki ayarları manuel olarak değiştirmeyi biliyor olabilir, ancak kodun orada olduğunu bilmiyorlarsa, kod altbilgilerini sürekli olarak geri değiştirdikçe, bu onları batty yönlendirecektir.

    Kod modülünüzü bulmaları pek olası değildir, ancak bulmaları durumunda, kod modülünde bir açıklama için onları bu web sitesine geri yönlendiren bir yorum bırakmak isteyebilirsiniz.

    Ayrıca, A1 hücresine, yazdırma üstbilgilerini değiştirmek için ayarlanmış bir olay işleyicisi olduğunu hatırlatan bir yorum eklemek isteyebilirsiniz.

  • VBA içinde olayların çalışmasını engelleyen bir ayar vardır. Makronuz aniden çalışmayı durdurursa, olayların çalışmasını önlemek için VBA içindeki bir şeyin bu ayarı değiştirdiğini bulmak yaygındır. Yaygın senaryo, bir programcının bir makroyu aşağıdakilerle başlatmasıdır:

    Application.EnableEvents = False '… macro here… Application.EnableEvents = True

    Makroda bir hata oluştuğunda, olaylar asla tekrar açılmaz. Bu olduğunda, çok az uyarı var. Olay işleyicilerinizin çalıştırılmadığından şüpheleniyorsanız, visual basic editöre gidin. Hemen bir bölme getirmek için Ctrl + g tuşlarına basın. Hemen bölmeye şunu yazın:

    Print Application.EnableEvents

    ve enter tuşuna basın. Bunun False olarak ayarlandığını fark ederseniz, hemen bölmeye aşağıdaki satırı yazın:

    Application.EnableEvents = True

    ve enter tuşuna basın.

Donna'ya harika bir soru için teşekkürler. Cevabı açıklama sürecinde, VBA'daki Olay İşleyicileri kavramını genişletmek için harika bir fırsattı.

Ilginç makaleler...