Günlük N2 değeri ile çal.sf.sı varsa sil, tsb sf.sını bu değer ile yeniden kopyala

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Aşağıdaki kodalar ile tsb adlı çalışma sayfamı n2 de yazan tarihi ggaayy formatına çevirerek yeni çalışma sayfasına kopyalıyorum.

Kod:
Sub sfeklead()
Set s1 = Sheets("günlük")
Set s2 = Sheets("tsb")
Set s3 = Sheets("devirler")
a = WorksheetFunction.Text(s1.Cells(2, 14), "ddmmyy")
'MsgBox a
    'Sheets("tsb").Copy 'yeni kitaba kopyalıyor
    Sheets("Tsb").Select
    Sheets("Tsb").Copy Before:=Sheets(1)
    ActiveSheet.Name = a
End Sub
Ancak istediğim
Mesala Günlük!n2= 28/09/2007
sayfa adı = 280907

O çalışma kitabında 280907 adlı çalışma sayfası var ise
bu sayfa silinecektir eminmisiniz diye soracak
evet cevabıyla çs sını silip tekrar tsb!n2 değeri ile ile yeniden kopyalayacak
hayır cevabıyla işlemi kesecek
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Kodunuzu aşağıdaki gibi değiştirin.

Kod:
Option Explicit
Sub sfeklead()
Dim s1 As Worksheet, s2 As Worksheet, s3 As Worksheet
Dim a As String
Dim i As Integer
Dim Cevap
Set s1 = Sheets("günlük")
Set s2 = Sheets("tsb")
Set s3 = Sheets("devirler")
a = WorksheetFunction.Text(s1.Cells(2, 14), "ddmmyy")
For i = 1 To Sheets.Count
    If Sheets(i).Name = a Then
       Cevap = MsgBox("Varolan sayfa silinsin mi?", vbYesNo, "UYARI")
       If Cevap = vbYes Then
          Application.DisplayAlerts = False
          Sheets(i).Delete
          Application.DisplayAlerts = True
          Exit For
       Else
          Set s1 = Nothing: Set s2 = Nothing: Set s3 = Nothing: Exit Sub
       End If
    End If
Next i
Sheets("Tsb").Select
Sheets("Tsb").Copy Before:=Sheets(1)
ActiveSheet.Name = a
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
teşekkür eder, saygılar sunarım.
araya küçük bir ilave ile çalışma sayfasının adını gösterip hata olasılığını kaldırdım. belki bunu isteyen arkadaşlara örnek olur.


Kod:
Sub sfeklead()
Dim s1 As Worksheet, s2 As Worksheet, s3 As Worksheet
Dim a As String
Dim i As Integer
Dim Cevap
Set s1 = Sheets("günlük")
Set s2 = Sheets("tsb")
Set s3 = Sheets("devirler")
a = WorksheetFunction.Text(s1.Cells(2, 14), "ddmmyy")
For i = 1 To Sheets.Count
    If Sheets(i).Name = a Then
       Cevap = MsgBox("Varolan " & a & " sayfası silinsin mi?", vbYesNo, "UYARI")
       If Cevap = vbYes Then
          Application.DisplayAlerts = False
          Sheets(i).Delete
          Application.DisplayAlerts = True
          Exit For
       Else
          Set s1 = Nothing: Set s2 = Nothing: Set s3 = Nothing: Exit Sub
       End If
    End If
Next i
Sheets("Tsb").Select
Sheets("Tsb").Copy Before:=Sheets(1)
ActiveSheet.Name = a
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
hata derken tarihi düzeltmeyi unutmuşuzdur 300907 ise yanlış dosyayı silmemek için
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Kod:
Sheets("Tsb").Select
Sheets("Tsb").Copy After:=Sheets(sn)
ActiveSheet.Name = a
kopyalanan sayfayı Çalışma kitabınının sonuna taşır
ben zor buldum neden sonra makro ile sona taşı demek geldi aklıma
 
Üst