Merhaba
Excel çalışmamda Liste kitabının YeniKayıt sayfasında CH bilgilerini doldurup yeni kayıt ekle butonuna tıkladığımda Firmalar sayfasındaki listeye satır atlatarak kaydediyor. Bunu nasıl engelleyebilirim ve kayıt sonrası Yeni kayıt edilen CH a ait bilgileri temizlemek için nasıl bir makro uygulanabilir. Yardımlarınız için teşekkür ederim.
Merhaba sarıya boyadığım kodlar gereksiz.
Ayrıca örnek adındaki excelede gerek yok bir sayfa açıp oraya kaydettirebilirdiniz Liste kitabına.
Silme koduda altta end subtan önce ekleyiniz.
Kod:
ActiveSheet.Range("D3:D15").ClearContents
(06/06/2020, 17:35)feraz yazdı: [ -> ]Merhaba sarıya boyadığım kodlar gereksiz.
Ayrıca örnek adındaki excelede gerek yok bir sayfa açıp oraya kaydettirebilirdiniz Liste kitabına.
Silme koduda altta end subtan önce ekleyiniz.
Kod:
ActiveSheet.Range("D3:D15").ClearContents
Sn.@
feraz Allah razı olsun
Çok teşekkür ederim ilginiz için Excel dersleri izleyip uygulanan metodları aynen yapıyorum. Listenin olduğu çalışma kitabı sayfalarına kaydolan her firma eklenirse tek dosya da zamanla şişer ve kasma yapar dendiği için Her bir firmaya Örnek Çalışma kitabı kopyalanıp ayrı bir
Excel kitabı halinde Örnek adı değiştirilerek yeni firma adı oluşturuluyor. Ana klasörün içine açılan tüm firmalar ayrı çalışma kitapları halinde kaydoluyor farketmiş sinizdir sanırım.
Rica ederim.Sizdende.O halde kodları alttaki gibi kullanınız.Koddaki sayfa adlarını belki kendiniz değiştirmek zorunda kalabilirsiniz eğer hata olursa Tr karakterden dolayı.
- Dosya \ Seçenekler
- Güven Merkezi \ Güven Merkezi Ayarları
- Gizlilik Seçenekleri \ Kaydederken dosya özelliklerinden kişisel bilgileri kaldır seçeneğini iptal ediniz.
Kod:
Sub YeniKayýt()
Dim ÖrnekDosya, YeniDosya, Firma As Variant
Dim kitap As Workbook
Dim syfYeni As Worksheet
Dim syfFirmalar As Worksheet
Const syfÖzet As String = "Özet"
Set syfYeni = ThisWorkbook.Sheets("YeniKayýt")
Set syfFirmalar = ThisWorkbook.Sheets("Firmalar")
Application.ScreenUpdating = False
' Tanýmlamalar
With syfYeni.Range("D3")
If .Value = "" Then
.Select
MsgBox "Müsteri Adi kismi bos olamaz..", vbCritical, "Hata"
GoTo son
End If
Firma = .Value
End With
ÖrnekDosya = ActiveWorkbook.Path & "\Örnek.xlsx"
YeniDosya = ActiveWorkbook.Path & "\" & Firma & ".xlsx"
' Dosya Kopyala
FileCopy ÖrnekDosya, YeniDosya
' Listedeki Bilgileri Kopyala
syfYeni.Range("D3:D15").Copy
' Yeni Dosyayý Aç
Set kitap = Workbooks.Open(YeniDosya)
With kitap
.Worksheets(syfÖzet).Select
.Worksheets(syfÖzet).Range("D3").PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWindow.Close
With syfFirmalar
.Select
.Rows("1:1").Copy .Range("A" & Rows.Count).End(3)(2, 1)
.Range("B" & Rows.Count).End(3).Value = Firma
.Range("A" & Rows.Count).End(3)(2, 1).Select
End With
With syfYeni
.Select
.Range("D3").Select
.Range("D3:D15").ClearContents
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
MsgBox "Bitti"
son:
Set kitap = Nothing
Set syfYeni = Nothing
Set syfFirmalar = Nothing
End Sub
(06/06/2020, 18:48)feraz yazdı: [ -> ]Rica ederim.Sizdende.O halde kodları alttaki gibi kullanınız.Koddaki sayfa adlarını belki kendiniz değiştirmek zorunda kalabilirsiniz eğer hata olursa Tr karakterden dolayı.
- Dosya \ Seçenekler
- Güven Merkezi \ Güven Merkezi Ayarları
- Gizlilik Seçenekleri \ Kaydederken dosya özelliklerinden kişisel bilgileri kaldır seçeneğini iptal ediniz.
Kod:
Sub YeniKayýt()
Dim ÖrnekDosya, YeniDosya, Firma As Variant
Dim kitap As Workbook
Dim syfYeni As Worksheet
Dim syfFirmalar As Worksheet
Const syfÖzet As String = "Özet"
Set syfYeni = ThisWorkbook.Sheets("YeniKayýt")
Set syfFirmalar = ThisWorkbook.Sheets("Firmalar")
Application.ScreenUpdating = False
' Tanýmlamalar
With syfYeni.Range("D3")
If .Value = "" Then
.Select
MsgBox "Müsteri Adi kismi bos olamaz..", vbCritical, "Hata"
GoTo son
End If
Firma = .Value
End With
ÖrnekDosya = ActiveWorkbook.Path & "\Örnek.xlsx"
YeniDosya = ActiveWorkbook.Path & "\" & Firma & ".xlsx"
' Dosya Kopyala
FileCopy ÖrnekDosya, YeniDosya
' Listedeki Bilgileri Kopyala
syfYeni.Range("D3:D15").Copy
' Yeni Dosyayý Aç
Set kitap = Workbooks.Open(YeniDosya)
With kitap
.Worksheets(syfÖzet).Select
.Worksheets(syfÖzet).Range("D3").PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWindow.Close
With syfFirmalar
.Select
.Rows("1:1").Copy .Range("A" & Rows.Count).End(3)(2, 1)
.Range("B" & Rows.Count).End(3).Value = Firma
.Range("A" & Rows.Count).End(3)(2, 1).Select
End With
With syfYeni
.Select
.Range("D3").Select
.Range("D3:D15").ClearContents
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
MsgBox "Bitti"
son:
Set kitap = Nothing
Set syfYeni = Nothing
Set syfFirmalar = Nothing
End Sub
VB kodlarınızı yeni bir klasör açıp orda denedim. Resimdeki hatayı alıyorum.
.select kısmını silip deneyin normalde hata yoktu bende.