VBA kullanarak hafta sonları ve tatiller olmadan bir ayın günlük sayfalarını oluşturun

Anonim

Bu yazımızda, tatil listesinde belirtilen tüm tarihler hariç, belirtilen yılın belirtilen ayı için hafta içi her gün için bir sayfa oluşturmak için bir makro oluşturacağız.

Makroyu çalıştırmadan önce üç giriş gereklidir. J10 hücresinde ay numarasını, J11 hücresinde yılı ve B16:B26 aralığında tatil tarihi listesini belirtmemiz gerekiyor.

Giriş değerlerini belirledikten sonra, makroyu çalıştırmak için gönder düğmesine tıklayın.

Bu makro, tatil listesinde belirtilen tarihler hariç, belirtilen ay için haftanın her günü için yeni bir sayfa ekleyecektir.

Mantıksal açıklama

Bu makroda belirtilen ayın son tarihini bulmak için DateSerial fonksiyonunu kullandık. Ayın başlangıç ​​tarihinden ayın son tarihine kadar döngü yapmak için FOR Döngüsü kullandık. Belirtilen tatil listesinde kullanılan tarihin bulunup bulunmadığını bulmak için Bul fonksiyonunu kullandık.

Hafta içi işlevi, bir tarihin hafta içi mi yoksa hafta sonu mu olduğunu kontrol etmek için If ifadesi ile birlikte kullanılır. If ifadesi, yalnızca tarih hafta içiyse ve tatil listesinde yoksa yeni bir sayfa ekler. Yukarıdaki ekran görüntüsünde de görebileceğiniz gibi, sayfa 6NS Aralık 6 olarak oluşturulmadıNS Aralık tatil listesinde mevcut.

Lütfen kod için aşağıdan takip edin

 Seçenek Explicit Sub MonthApply() 'Dim DVariable As Date Dim RngFind As Range Dim MonthNo, YearNo As Integer Dim StartDate, EndDate As Date 'Ekran güncellemelerini devre dışı bırakma Application.ScreenUpdating = False with Worksheets("Main") 'Ay alınıyor ve J10 hücresinden yıl ve "Ana" sayfadan J11 AyNo = .Range("J10").Value YearNo = .Range("J11").Value 'Başlangıç ​​ve bitiş tarihi türetiliyor StartDate = DateSerial(YılNo, AyNo, 1) BitişTarihi = DateSerial(YearNo, MonthNo + 1, 0) 'Belirtilen aydaki tüm tarihler arasında dolaşma For DVariable = StartDate To EndDate 'Tarihin tatil olarak işaretlenip işaretlenmediğini bulma Set RngFind = .Range("B16:B26").Find( DVariable) 'Tarihin tatil mi, hafta sonu mu yoksa hafta içi mi olduğunu kontrol etme Eğer RngFind Is Nothing And Weekday(DVariable, 2) < 6 Sonra 'Çalışma kitabındaki son çalışma sayfasından sonra yeni sayfa ekleme Çalışma Sayfaları.Add after:=Worksheets(Worksheets.Count)' Etkin sayfayı yeniden adlandırma ActiveSheet.Name = Format(DVariable, "dd.mm.yy") End If Next DVariable .End W'yi seçin ith Application.ScreenUpdating = True End Sub 

Bu blogu 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 geliştirebileceğimizi ve sizin için nasıl daha iyi hale getirebileceğimizi bize bildirin. E-posta sitesinde bize yazın