Soru İnputbox ile Sayfa Adı Seçme

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Herkese merhaba aşağıdaki kodlarla inputbox ile sayfa seçmeye çalışıyorum olmuyor .
Yardımcı olabilecek olan var mı

Kod:
Dim s As String
s = InputBox("Sayfa adını yaziniz", "SAYFA SEÇME")
Sheets(s).Select
.
.
.
Sonra da seçilen sayfada işlem yapacağım ama sayfa secilmiyor
Object variable or with block variable not set
Diye hata veriyor.
 

AdemCan

Altın Üye
Destek Ekibi
Katılım
1 Eylül 2008
Mesajlar
1,386
Excel Vers. ve Dili
2019 TR
Aşağıdaki şekilde kullanabilirsiniz.
Kod:
Dim s As String, i As Worksheet
s = InputBox("Sayfa adını yaziniz", "SAYFA SEÇME")
Set i = Sheets(s)
i.Select
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Kod:
Sub YuvarlatılmışDikdörtgen1_Tıkla()
''''''''''''''''''''''''''Hatırlatıcı Kodları
Dim bugun As Long, tarih As Long, i As Long, a As Long
Dim s As Worksheet, mesaj As String
Dim z As String
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Dim ilk As Integer, son As Integer   ', i As Integer


ilk = 15
son = Range("D" & Rows.Count).End(xlUp).Row
Range("B" & ilk, "C" & son).Value = ""
For i = ilk To son
    If IsNumeric(Range("D" & i)) And Len(Range("D" & i)) > 0 Then
    'If IsNumeric(Range("D" & i)) And Len(Range("D" & i)) > 0 And Len(Range("E" & i)) > 0 And Len(Range("f" & i)) > 0 Then
        x = x + 1
        Range("B" & i) = x
        If WorksheetFunction.CountIfs(Range("D" & ilk, "D" & son), Range("D" & i)) > 1 Then
            If Range("A" & i) = "*" Then
                k = k + 1
                Range("C" & i) = k
            Else
                Range("C" & i) = ""
            End If
        Else
                k = k + 1
                Range("C" & i) = k
        End If
    End If
Next i
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''On Error Resume Next
''On Error GoTo son
''Application.DisplayAlerts = False
' s = Application.InputBox("sayfa", "adı")
' Sheets(s).Select
    Set z = InputBox("Mail adresi giriniz", "MAİL")
    Set s = Sheets(s)
    s.Select
    If s = vbNullString Then
        MsgBox "Mail adresi girmediniz. " & vbNewLine & "Uygulamadan çıkılıyor.", vbOKOnly
        Exit Sub
    End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
a = s.Range("F65536").End(3).Row
bugun = CLng(CDate(Date))

For i = 137 To a
    tarih = CLng(CDate(s.Cells(i, "H")))

    fark = tarih - bugun
        If fark >= 1 And fark < 3 And s.Cells(i, "c").Value <> "bitti" Then
            baslik = "Aktif Personel Hatırlatması"
            mesaj = mesaj & vbCr & s.Cells(i, "F") & "  isimli personelin " & s.Cells(i, "G") & "Başlama" & "Tarihine : " & s.Cells(i, "H") & " " & CInt(tarih - bugun) & "   gün kaldı."
        End If

        If fark = 0 And s.Cells(i, "c").Value <> "bitti" Then
            baslik = "Aktif Personel Hatırlatması"
            mesaj = mesaj & vbCr & s.Cells(i, "F") & "  isimli personelin " & s.Cells(i, "G") & " Başlama" & "Tarihi BUGÜN "
        End If
Next i
    MsgBox baslik & vbCr & mesaj, vbInformation, "ELAZIĞ"

Set s = Nothing
i = Empty: a = Empty
bugun = Empty: tarih = Empty:
mesaj = vbNullString: baslik = vbNullString



End Sub
Kod:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''On Error Resume Next
''On Error GoTo son
''Application.DisplayAlerts = False
' s = Application.InputBox("sayfa", "adı")
' Sheets(s).Select
    Set z = InputBox("Mail adresi giriniz", "MAİL")
    Set s = Sheets(s)
    s.Select
    If s = vbNullString Then
        MsgBox "Mail adresi girmediniz. " & vbNewLine & "Uygulamadan çıkılıyor.", vbOKOnly
        Exit Sub
    End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Bu kısımda işlem yapılacak.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Yerinizde olsam sayfa seçimini inputboxla yapmazdım. Çünkü hatalı yazımlar makronun düzgün çalışmamasına ve sürekli hata vermesine neden olur. Onun yerine userform ve listbox ya da combobox kullanmanızı tavsiye ederim.
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Hocam sayfa adları rakam olacak
18
19
20 şeklinde 30 a kadar
Hocam combobox şeklinde nasıl revize edebiliriz peki
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Hocam pwki sayfa seçmeden aktif sayfa desek nas diyebiliriz
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Makroda Activesheet aktif sayfa demektir. Ayrıca herhangi bir sayfa adı belirtilmediğinde de aktif sayfada işlem yapar.
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Kod:
Sub Hatırlatıcı ()
Dim bugun As Long, tarih As Long, i As Long, a As Long
Dim s As Worksheet, mesaj As String

Set s=Sheet("18")
a = s.Range("F65536").End(3).Row
bugun = CLng(CDate(Date))

For i = 137 To a
    tarih = CLng(CDate(s.Cells(i, "H")))

    fark = tarih - bugun
        If fark >= 1 And fark < 3 And s.Cells(i, "c").Value <> "bitti" Then
            baslik = "Aktif Personel Hatırlatması"
            mesaj = mesaj & vbCr & s.Cells(i, "F") & "  isimli personelin " & s.Cells(i, "G") & "Başlama" & "Tarihine : " & s.Cells(i, "H") & " " & CInt(tarih - bugun) & "   gün kaldı."
        End If

        If fark = 0 And s.Cells(i, "c").Value <> "bitti" Then
            baslik = "Aktif Personel Hatırlatması"
            mesaj = mesaj & vbCr & s.Cells(i, "F") & "  isimli personelin " & s.Cells(i, "G") & " Başlama" & "Tarihi BUGÜN "
        End If
Next i
    MsgBox baslik & vbCr & mesaj, vbInformation, "ELAZIĞ"

Set s = Nothing
i = Empty: a = Empty
bugun = Empty: tarih = Empty:
mesaj = vbNullString: baslik = vbNullString

End Sub
Bu kodun aktif sayfa hangisi ise onun için çalışması için kodu revize edebilecek olan varsa çok sevinirm.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Set s=Sheet("18")

yukarıdaki yerine aşağıdaki satırı yazarak deneyiniz

Set s = ActiveSheet

.
 
Katılım
30 Aralık 2008
Mesajlar
2
Excel Vers. ve Dili
2007 türkçe
Aşağıdaki şekilde kullanabilirsiniz.
Kod:
Dim s As String, i As Worksheet
s = InputBox("Sayfa adını yaziniz", "SAYFA SEÇME")
Set i = Sheets(s)
i.Select

hocam bu süper çalışıyor .peki sayfa seçme ekranında aynı anda 3-4 sayfa ismini seçme şansımız var mı .araya virgül koydum yazdım ama yazdırmıyor.aynı kodu 5 defa yapıştırdım 5 defa sayfayı sordu basmadan ama bu seferde seçilen sayfada kalıyor ekran .
 
Katılım
30 Aralık 2008
Mesajlar
2
Excel Vers. ve Dili
2007 türkçe
hocam bu süper çalışıyor .peki sayfa seçme ekranında aynı anda 3-4 sayfa ismini seçme şansımız var mı .araya virgül koydum yazdım ama yazdırmıyor.aynı kodu 5 defa yapıştırdım 5 defa sayfayı sordu basmadan ama bu seferde seçilen sayfada kalıyor ekran .
kod bu şekilde arkadaşlar buldum.
Sub PrintSelectedSheets()
Dim s As String
Dim sheetsToPrint As Variant
Dim ws As Worksheet

' Kullanıcıdan yazdırılacak sayfa isimlerini al
s = InputBox("Yazdırmak istediğiniz sayfa isimlerini virgülle ayırarak yazınız", "SAYFA YAZDIRMA")

' Sayfa isimlerini ayırarak bir dizi oluştur
sheetsToPrint = Split(s, ",")

' Her bir sayfa ismi için döngüye gir ve yazdır
For Each ws In ThisWorkbook.Sheets
If Not IsError(Application.Match(ws.Name, sheetsToPrint, 0)) Then
ws.PrintOut Copies:=2
End If
Next ws

End Sub
 
Üst