Vba kullanılarak bir sayfanın mevcut olup olmadığı nasıl kontrol edilir?
Bir sayfa oluşturmak, silmek, taşımak veya kopyalamak istiyorsanız bu sayfanın var olup olmadığını bilmeniz gerekir.
Sayfanın var olup olmadığını kontrol etmek amacıyla kod yazmak için, çalışma kitabındaki her sayfanın içinden geçen ve sağladığınız adla eşleşen bir döngüye ihtiyacınız vardır. Ancak olay şu ki, bunun için iki farklı döngü kullanabilirsiniz ( Sonraki ve Her Biri İçin ) ve bugün her ikisini de kullanacağız.
Bu derste bunu yapmanın farklı yollarına bakacağız. Bu nedenle, şeridinizde Geliştirici sekmesinin bulunduğundan emin olun ve bu kodu yazmak için VBA düzenleyicisini açın.
Geçerli çalışma kitabında bir sayfanın olup olmadığını kontrol edin
Bu döngüyle, çalışma kitabındaki tüm sayfalara başvurabilir ve sayfa adını aramak istediğiniz sayfanın adıyla eşleştirmek için bunlar arasında tek tek dolaşabilirsiniz.
Bu adımları takip et:
- İlk olarak, döngüyü çalıştırırken sayfa için kullanılacak ve aramak istediğiniz sayfanın adını saklayacak bir değişken bildirin.
- Ardından, aramak istediğiniz sayfanın adını girmek için giriş kutusu için bir kod satırı yazın.
- Bundan sonra döngünüze For Every anahtar sözcüğüyle başlayın. Ve çalışma kitabındaki her çalışma sayfasına başvurmak için değişkeni kullanın .
- Buradan sayfa adını giriş kutusuna girdiğiniz adla eşleştirmek için IF THEN ELSE deyimini yazmanız, ardından eşleşme bulunursa bir mesaj kutusu görüntülemeniz ve prosedürden çıkmanız gerekir.
- Sonunda, eşleşme bulunamazsa sizi bilgilendirecek bir mesaj kutusu .
Yararlı bağlantılar: Makro çalıştırma – Makro kaydedici – Visual Basic Düzenleyici – Kişisel Makrolar El Kitabı
Tam kod:
Sub vba_check_sheet() Dim sht As Worksheet Dim shtName As String shtName = InputBox(Prompt:="Enter the sheet name", _ Title:="Search Sheet") For Each sht In ThisWorkbook.Worksheets If sht.Name = shtName Then MsgBox "Yes! " & shtName & " is there in the workbook." Exit Sub End If Next sht MsgBox "No! " & shtName & "is not there in the workbook." End Sub
Nasıl çalıştığını anlatayım: Bu kodu çalıştırdığınızda, aramak istediğiniz sayfanın adını girmeniz gereken yere bir mesaj gelecektir.
Bundan sonra, adı girdiğiniz adla eşleştirmek için her sayfanın üzerinden geçer ve ad bir sayfayla eşleşirse size bir mesaj, eşleşme yoksa başka bir mesaj gösterir.
Bir sayfanın var olup olmadığını kontrol etmek için başka bir kod.
Sub vba_check_sheet() Dim sht As Worksheet Dim shtName As String Dim i As Long i = Sheets.Count shtName = InputBox(Prompt:="Enter the sheet name", _ Title:="Search Sheet") For i = 1 To i If Sheets(i).Name = shtName Then MsgBox "Yes! " & shtName & " is there in the workbook." Exit Sub End If Next i MsgBox "No! " & shtName & " is not there in the workbook." End Sub
Bu kod FOR NEXT döngüsünü kullanır ve çalışma kitabındaki toplam sayfa sayısını kullanır ve buna bağlı olarak, girdiğiniz adla eşleşen her sayfada döngü yapar.
Sayfanın kapalı çalışma kitabında olup olmadığını kontrol edin
Aşağıdaki kodda kapalı bir çalışma kitabındaki sayfa adını arayan bir döngünüz var. Dosyaya başvurmak için dosya adresini kullandık.
Sub vba_check_sheet() Dim wb As Workbook Dim sht As Worksheet Dim shtName As String shtName = InputBox(Prompt:="Enter the sheet name", _ Title:="Search Sheet") Application.ScreenUpdating = False Set wb = Workbooks.Open _ ("C:UsersDellDesktopsample-file.xlsx") For Each sht In wb.Worksheets If sht.Name = shtName Then wb.Close SaveChanges:=True MsgBox "Yes! " & shtName & " is there in the workbook." _ , vbInformation, "Found" Exit Sub End If Next sht Application.ScreenUpdating = False MsgBox "No! " & shtName _ & " is not there in the workbook.", _ vbCritical, "Not Found" End Sub
Bu makroyu çalıştırdığınızda, ekran güncellemeyi devre dışı bıraktığınızda arkadaki dosyayı açar ve tüm sayfaları geçtikten sonra ekran güncellemeyi etkinleştirecek koda sahip olursunuz. ‘ekran.
Not: Gördüğünüz gibi, dosya konumu adresinde dosya uzantısı bulunmaktadır, bu da ona başvurmak için doğru dosya uzantısına sahip olmanız gerektiği anlamına gelir.