Aralıktaki hücreler boş ise kopyala dolu ise bir alta kopyala

Katılım
2 Ekim 2015
Mesajlar
74
Excel Vers. ve Dili
2019 TR
Merhabalar excel makrolarda henüz acemiyim o yüzden beni mahzur görün bir konuda yardıma ihtiyacım var takıldığım 2 nokta var
1. sorunum şu:
"Veri" isimli sayfadan B2:L2 aralığını kopyalayıp "Liste" isimli sayfanın B2 hücresi boş ise B2 satırına dolu ise B3 satırına olacak şekilde dolu satırın hep bir altındaki boş satıra kopyalasın
2. sorunum şu:
Yukarıdaki işlemi yapar iken aynı zamanda B2:L2 aralığındaki değerleri yine kopyalayıp F2 hücresinin değeri 3 yaş ise 3 yaş sayfasına, 4 yaş ise 4 yaş sayfasına, 5 yaş ise 5 yaş sayfasına yine yukarıdaki gibi B2 hücresinden başlayıp dolu satırı atlayarak kopyalasın
 

bordo6181

Altın Üye
Katılım
15 Nisan 2020
Mesajlar
77
Excel Vers. ve Dili
2016 - Türkçe
Altın Üyelik Bitiş Tarihi
15-04-2025

Şu işlemi dener misiniz
 
Katılım
2 Ekim 2015
Mesajlar
74
Excel Vers. ve Dili
2019 TR

Şu işlemi dener misiniz
Dediğiniz kodları daha önce incelemiştim fakat linkteki fotodan da anlayacağınız üzere benim istediğim userform benzeri birşey kaydet düğmesine tıkladığım anda ilgili kutucuklara girdiğim değerleri veri sayfasındaki B2:L2 aralığından kopyalayıp Toplu Liste sayfasında B2 den başlayarak dolu olan satırı atlayarak kopyalayacak ayrıca veri sayfasındaki B2:L2 aralığında F2 hücresinin değeri 3 yaş ise 3 yaş sayfasına, 4 yaş ise 4 yaş sayfasına, 5 yaş ise 5 yaş sayfasına yine yukarıdaki gibi B2 hücresinden başlayıp dolu satırı atlayarak kopyalayacak.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,785
Excel Vers. ve Dili
Microsoft 365 Tr-64
KAYDET butonunuza aşağıdaki kodları ekleyebilirsiniz.

Kod:
Sub Kaydet()
Dim Son1 As Integer
    
    Son1 = Worksheets("TOPLU LİSTE").Range("B" & Range("B:B").Rows.Count).End(xlUp).Row + 1
    Son2 = Worksheets(Worksheets("VERİ").Range("F2") & " YAŞ A").Range("B" & Range("B:B").Rows.Count).End(xlUp).Row + 1
    Worksheets("VERİ").Range("B2:L2").Copy Worksheets("TOPLU LİSTE").Range("B" & Son1)
    Worksheets("VERİ").Range("B2:L2").Copy Worksheets(Worksheets("VERİ").Range("F2") & " YAŞ A").Range("B" & Son2)

End Sub
 
Katılım
2 Ekim 2015
Mesajlar
74
Excel Vers. ve Dili
2019 TR
KAYDET butonunuza aşağıdaki kodları ekleyebilirsiniz.

Kod:
Sub Kaydet()
Dim Son1 As Integer
  
    Son1 = Worksheets("TOPLU LİSTE").Range("B" & Range("B:B").Rows.Count).End(xlUp).Row + 1
    Son2 = Worksheets(Worksheets("VERİ").Range("F2") & " YAŞ A").Range("B" & Range("B:B").Rows.Count).End(xlUp).Row + 1
    Worksheets("VERİ").Range("B2:L2").Copy Worksheets("TOPLU LİSTE").Range("B" & Son1)
    Worksheets("VERİ").Range("B2:L2").Copy Worksheets(Worksheets("VERİ").Range("F2") & " YAŞ A").Range("B" & Son2)

End Sub
Cevabınız için çok teşekkür ederim fakat kodlar hata verdi benim yaptığım makro aşağıdaki gibi inceleyebilir misiniz
1. koşul veri sayfasındaki değerleri alıp toplu listeye kopyalıyor
Sheets("VERİ").Select
Range("A2:K2").Select
Selection.Copy
Sheets("TOPLU LİSTE").Select
If Range("B2") = "" Then
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ElseIf Range("B2") <> "" Then
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ElseIf Range("B3") <> "" Then
Range("B4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If

2. koşul veri sayfasındaki F2 hücresinin değerlerine göre verileri alıp 3 YAŞ A, 4 YAŞ A, 5YAŞ A sayfalarından uygun olanına kopyalıyor.
Sheets("VERİ").Select
If Range("F2") = "3 YAŞ A" Then
Range("A2:K2").Select
Selection.Copy
Sheets("3 YAŞ A").Select
If Range("B2") = "" Then
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ElseIf Range("B2") <> "" Then
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ElseIf Range("B3") <> "" Then
Range("B4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If

If Range("F2") = "4 YAŞ A" Then
Range("A2:K2").Select
Selection.Copy
Sheets("4 YAŞ A").Select
If Range("B2") = "" Then
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ElseIf Range("B2") <> "" Then
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ElseIf Range("B3") <> "" Then
Range("B4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If

If Range("F2") = "5 YAŞ A" Then
Range("A2:K2").Select
Selection.Copy
Sheets("5 YAŞ A").Select
If Range("B2") = "" Then
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ElseIf Range("B2") <> "" Then
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ElseIf Range("B3") <> "" Then
Range("B4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,785
Excel Vers. ve Dili
Microsoft 365 Tr-64
Sizin kodları tamamen silin benim verdiğimi sildiğiniz kısma aynen yapıştırın.
 
Katılım
2 Ekim 2015
Mesajlar
74
Excel Vers. ve Dili
2019 TR
Sizin kodları tamamen silin benim verdiğimi sildiğiniz kısma aynen yapıştırın.
Yazdığınız kodların aşağıdaki satırı hata vermekte
Son2 = Worksheets(Worksheets("VERİ").Range("F2") & " YAŞ A").Range("B" & Range("B:B").Rows.Count).End(xlUp).Row + 1
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,785
Excel Vers. ve Dili
Microsoft 365 Tr-64
Dosyanızı bir yükleme sitesine ekleyip link verirmisiniz. Bakayım
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,785
Excel Vers. ve Dili
Microsoft 365 Tr-64
Dosyanızı açtım, bazı sorularım var. Tek hamlede tamamlayalım
  1. Yukarıdaki isteklerinizde VERİ sayfasından diğer sayfalara aktarma / kopyalama yapmak istiyorsunuz. Ancak KAYIT sayfanızdaki veri girişlerini de sanırım VERİ sayfasına yapmaya çalışıyorsunuz. Doğru mudur?
  2. Bu durumda Veri sayfası ile Toplu Liste sayfalarınız son sütunlar hariç birbirinin aynısı olmuyor mu? Bu işi tek sayfada tamamlasanız daha hoş olmaz mı? Zaten anlattığınıza göre VERİ sayfası tek satır veri içeren (B2:M2) bir sayfa. Ve sanırım bunu da KAYIT sayfasından buraya ekliyorsunuz. KAYIT sayfanızda siz veriyi girin, hem toplu listeye hem de yaş grubuna göre ilgili yağ sayfasına atsın. Bu mudur olması gereken?
  3. Kayıt sayfanızdan eksik - hatalı veri girişlerini engellemek istiyor musunuz?
  4. Yaş grupları için neden A-B-C sayfaları oluşturdunuz? 3 yaş grubundaki hangi 3 yaş sayfasına kayıt edilecek? Farkı nedir? Neye göre düzenliyorsunuz? Bunlar tek bir sayfada olsa olmaz mı?
 
Katılım
2 Ekim 2015
Mesajlar
74
Excel Vers. ve Dili
2019 TR
ilk mesajımı yazarken de belirttiğim gibi excel makrolarda acemiyim ve kendimce bir şeyler yaparak öğrenmeye çabalıyorum o yüzden kusura bakmayın işlemleri biraz uzatmış olabilirim
1- KAYIT sayfasındaki değerler ardışık olmayan hücrelerde olduğu için (D6,D8,D10,H12,H14 vs.) oları VERİ sayfasında ardışık olacak şekilde B2:L2 aralığında tek bir satırda birleştirdim ve o şekilde TOPLU LİSTE isimli sayfaya kopyalama yaptırıyorum.
2-üstteki işlemi yapamadığım için bu şekilde bir yol bulmaya çalışmıştım ama sizin de dediğiniz gibi KAYIT sayfanızda veriyi girince, hem toplu listeye hem de yaş grubuna göre ilgili yaş sayfasına atarsa tadından yenmez :)
3- Evet özellikle öğrencilerin TC kimlik no eksik girilebiliyor o yüzden 11 basamaktan az yada fazla ise uyarı vermesini istiyorum.
4- Anaokulunda m.yardımcısıyım ve yaş grupları için (sınıflar) farklı şubelerimiz var öğrenci listelerimiz de şubelere göre farklı olduğu için KAYIT sayfasındaki açılır listeden hangi yaş grubunun şubesini seçersem toplu liste ile birlikte o yaş grubunun olduğu sayfaya da aktarma yapacak.

ayrıca birkaç şey daha istesem ayıp etmiş olur muyum bilmiyorum şayet sizin için zahmet olmazsa
1-mesela daha öncelerden kaydettiğimiz 4.satırdaki X kişisini diyelim ki sildik bir sonraki öğrenci kaydında önce 4. satır daki boş yere kayıt yapsın
2-bir de yaş gruplarına yapılan her kayıttan sonra yaş grubu şubelerindeki öğrenci isimlerini A' dan Z' ye sıralasın.
dün nette şöyle bir kod buldum kopyalama için başarılı
Sub kayıt()
Sheets("VERİ").Select
Range("B2:M2").Select
Selection.Copy
Sheets("TOPLU LİSTE").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select '(0,1) olduğu zaman satırlar için olur.
Loop
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("KAYIT").Select
End Sub
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,785
Excel Vers. ve Dili
Microsoft 365 Tr-64
Dosyanız
Yeni Haliyle Kayıt Dosyanız

Yaptıklarım;
  1. Kodların Tamamı Module 1 içinde ve aşağıdaki gibi.
  2. Kayıt Sayfanızda Takvim için kodunuzda ufak bir değişiklik yaptım
  3. Veri Doğrulama özelliklerinden bazılarını değiştirdim
  4. VERİ sayfasını tamamen kaldırdım
  5. Telefon Numaraları hariç tüm kayıt bilgilerini kontrol ettirdim.
Kod:
Public HatalıKayıt As Boolean
Public Sh1, Sh2, Sh3 As Worksheet


Sub TcNoKontrol()
Dim TC1 As Integer, TC2 As Integer, TC3 As Integer, TC4 As Integer, TC5 As Integer, TC6 As Integer, TC7 As Integer, TC8 As Integer, TC9 As Integer, TC10 As Integer, TC11 As Integer
Dim TcNoArray(10) As Integer

    TcNo = Sh1.Range("D6")
    If Len(TcNo) <> 11 Then HatalıKayıt = True: Exit Sub
    For i = 1 To 11
        If IsNumeric(Mid(TcNo, i, 1)) Then
            TcNoArray(i - 1) = Mid(TcNo, i, 1)
        Else: HatalıKayıt = True: Exit Sub
        End If
    Next i
    TCKHes1 = ((((TcNoArray(0) + TcNoArray(2) + TcNoArray(4) + TcNoArray(6) + TcNoArray(8)) * 7) - (TcNoArray(1) + TcNoArray(3) + TcNoArray(5) + TcNoArray(7))) Mod 10)
    For i = 0 To 9
        TCKHes2 = TCKHes2 + TcNoArray(i)
    Next i
    TCKHes2 = TCKHes2 Mod 10

    If TCKHes1 = TcNoArray(9) And TCKHes2 = TcNoArray(10) Then
        Exit Sub
    Else
        HatalıKayıt = True
    End If
End Sub
Sub AdKontrol()
    AdSoyad = Sh1.Range("D8")
    If Len(AdSoyad) < 3 Then HatalıKayıt = True: Exit Sub
    If Not Application.IsText(AdSoyad) Then HatalıKayıt = True
End Sub
Sub TarihKontrol()
    DogTarih = Sh1.Range("D10")
    If IsDate(DogTarih) Then Exit Sub
    HatalıKayıt = True
End Sub
Sub KayTarihKontrol()
    KayTarih = Sh1.Range("D16")
    If IsDate(KayTarih) Then Exit Sub
    HatalıKayıt = True
End Sub
Sub BabaKontrol()
    AdSoyad = Sh1.Range("H6")
    If Len(AdSoyad) < 3 Then HatalıKayıt = True: Exit Sub
    If Not Application.IsText(AdSoyad) Then HatalıKayıt = True
End Sub
Sub AnaKontrol()
    AdSoyad = Sh1.Range("H10")
    If Len(AdSoyad) < 3 Then HatalıKayıt = True: Exit Sub
    If Not Application.IsText(AdSoyad) Then HatalıKayıt = True
End Sub
Sub Kaydet()
    Set Sh1 = Worksheets("KAYIT")
    Set Sh2 = Worksheets("TOPLU LİSTE")
    Call TcNoKontrol
    If HatalıKayıt = True Then MsgBox (" Geçersiz TC Kimlik Numarası "): Sh1.Range("D6").Activate: Exit Sub
    Call AdKontrol
    If HatalıKayıt = True Then MsgBox (" Geçersiz Ad Soyad "): Sh1.Range("D8").Activate: Exit Sub
    Call TarihKontrol
    If HatalıKayıt = True Then MsgBox (" Geçersiz Doğum Tarihi "): Sh1.Range("D10").Activate: Exit Sub
    If Sh1.Range("D12") = "" Then MsgBox ("Cinsiyet Seçilmemiş"): Sh1.Range("D12").Activate: Exit Sub
    If Sh1.Range("D14") = "" Then MsgBox ("Şube Seçilmemiş"): Sh1.Range("D14").Activate: Exit Sub
    Call KayTarihKontrol
    If HatalıKayıt = True Then MsgBox (" Geçersiz Kayıt Tarihi "): Sh1.Range("D16").Activate: Exit Sub
    Call BabaKontrol
    If HatalıKayıt = True Then MsgBox (" Geçersiz Baba Adı "): Sh1.Range("H6").Activate: Exit Sub
    Call AnaKontrol
    If HatalıKayıt = True Then MsgBox (" Geçersiz Anne Adı "): Sh1.Range("H10").Activate: Exit Sub
    If Sh1.Range("H14") = "" Then MsgBox ("Aile durumu belirtilmemiş"): Sh1.Range("H14").Activate: Exit Sub
    If Sh1.Range("H16") = "" Then MsgBox ("Kayıtta aidat durumu belirtilmemiş"): Sh1.Range("H16").Activate: Exit Sub

    If Sh2.Range("A2") = "" Then
        k = 2
    Else
        k = Sh2.Range("A1").End(xlDown).Row + 1
    End If
    Sh2.Range("A" & k) = k - 1
    Sh2.Range("B" & k) = Sh1.Range("D6")
    Sh2.Range("C" & k) = Sh1.Range("D8")
    Sh2.Range("D" & k) = Sh1.Range("D10")
    Sh2.Range("E" & k) = Sh1.Range("D12")
    Sh2.Range("F" & k) = Sh1.Range("D14")
    Sh2.Range("G" & k) = Sh1.Range("H6")
    Sh2.Range("H" & k) = Sh1.Range("H8")
    Sh2.Range("I" & k) = Sh1.Range("H10")
    Sh2.Range("J" & k) = Sh1.Range("H12")
    Sh2.Range("K" & k) = Sh1.Range("H14")
    Sh2.Range("L" & k) = Sh1.Range("D16")
    Sh2.Range("M" & k) = Sh1.Range("H16")
    
    Set Sh3 = Worksheets(Sh1.Range("D14").Value)
    If Sh3.Range("A2") = "" Then
        x = 2
    Else
        x = Sh3.Range("A1").End(xlDown).Row + 1
    End If
    Sh3.Range("A" & x) = x - 1
    Sh2.Range("B" & k, "M" & k).Copy Sh3.Range("B" & x)
End Sub
 
Katılım
2 Ekim 2015
Mesajlar
74
Excel Vers. ve Dili
2019 TR
Dosyanız
Yeni Haliyle Kayıt Dosyanız

Yaptıklarım;
  1. Kodların Tamamı Module 1 içinde ve aşağıdaki gibi.
  2. Kayıt Sayfanızda Takvim için kodunuzda ufak bir değişiklik yaptım
  3. Veri Doğrulama özelliklerinden bazılarını değiştirdim
  4. VERİ sayfasını tamamen kaldırdım
  5. Telefon Numaraları hariç tüm kayıt bilgilerini kontrol ettirdim.
Kod:
Public HatalıKayıt As Boolean
Public Sh1, Sh2, Sh3 As Worksheet


Sub TcNoKontrol()
Dim TC1 As Integer, TC2 As Integer, TC3 As Integer, TC4 As Integer, TC5 As Integer, TC6 As Integer, TC7 As Integer, TC8 As Integer, TC9 As Integer, TC10 As Integer, TC11 As Integer
Dim TcNoArray(10) As Integer

    TcNo = Sh1.Range("D6")
    If Len(TcNo) <> 11 Then HatalıKayıt = True: Exit Sub
    For i = 1 To 11
        If IsNumeric(Mid(TcNo, i, 1)) Then
            TcNoArray(i - 1) = Mid(TcNo, i, 1)
        Else: HatalıKayıt = True: Exit Sub
        End If
    Next i
    TCKHes1 = ((((TcNoArray(0) + TcNoArray(2) + TcNoArray(4) + TcNoArray(6) + TcNoArray(8)) * 7) - (TcNoArray(1) + TcNoArray(3) + TcNoArray(5) + TcNoArray(7))) Mod 10)
    For i = 0 To 9
        TCKHes2 = TCKHes2 + TcNoArray(i)
    Next i
    TCKHes2 = TCKHes2 Mod 10

    If TCKHes1 = TcNoArray(9) And TCKHes2 = TcNoArray(10) Then
        Exit Sub
    Else
        HatalıKayıt = True
    End If
End Sub
Sub AdKontrol()
    AdSoyad = Sh1.Range("D8")
    If Len(AdSoyad) < 3 Then HatalıKayıt = True: Exit Sub
    If Not Application.IsText(AdSoyad) Then HatalıKayıt = True
End Sub
Sub TarihKontrol()
    DogTarih = Sh1.Range("D10")
    If IsDate(DogTarih) Then Exit Sub
    HatalıKayıt = True
End Sub
Sub KayTarihKontrol()
    KayTarih = Sh1.Range("D16")
    If IsDate(KayTarih) Then Exit Sub
    HatalıKayıt = True
End Sub
Sub BabaKontrol()
    AdSoyad = Sh1.Range("H6")
    If Len(AdSoyad) < 3 Then HatalıKayıt = True: Exit Sub
    If Not Application.IsText(AdSoyad) Then HatalıKayıt = True
End Sub
Sub AnaKontrol()
    AdSoyad = Sh1.Range("H10")
    If Len(AdSoyad) < 3 Then HatalıKayıt = True: Exit Sub
    If Not Application.IsText(AdSoyad) Then HatalıKayıt = True
End Sub
Sub Kaydet()
    Set Sh1 = Worksheets("KAYIT")
    Set Sh2 = Worksheets("TOPLU LİSTE")
    Call TcNoKontrol
    If HatalıKayıt = True Then MsgBox (" Geçersiz TC Kimlik Numarası "): Sh1.Range("D6").Activate: Exit Sub
    Call AdKontrol
    If HatalıKayıt = True Then MsgBox (" Geçersiz Ad Soyad "): Sh1.Range("D8").Activate: Exit Sub
    Call TarihKontrol
    If HatalıKayıt = True Then MsgBox (" Geçersiz Doğum Tarihi "): Sh1.Range("D10").Activate: Exit Sub
    If Sh1.Range("D12") = "" Then MsgBox ("Cinsiyet Seçilmemiş"): Sh1.Range("D12").Activate: Exit Sub
    If Sh1.Range("D14") = "" Then MsgBox ("Şube Seçilmemiş"): Sh1.Range("D14").Activate: Exit Sub
    Call KayTarihKontrol
    If HatalıKayıt = True Then MsgBox (" Geçersiz Kayıt Tarihi "): Sh1.Range("D16").Activate: Exit Sub
    Call BabaKontrol
    If HatalıKayıt = True Then MsgBox (" Geçersiz Baba Adı "): Sh1.Range("H6").Activate: Exit Sub
    Call AnaKontrol
    If HatalıKayıt = True Then MsgBox (" Geçersiz Anne Adı "): Sh1.Range("H10").Activate: Exit Sub
    If Sh1.Range("H14") = "" Then MsgBox ("Aile durumu belirtilmemiş"): Sh1.Range("H14").Activate: Exit Sub
    If Sh1.Range("H16") = "" Then MsgBox ("Kayıtta aidat durumu belirtilmemiş"): Sh1.Range("H16").Activate: Exit Sub

    If Sh2.Range("A2") = "" Then
        k = 2
    Else
        k = Sh2.Range("A1").End(xlDown).Row + 1
    End If
    Sh2.Range("A" & k) = k - 1
    Sh2.Range("B" & k) = Sh1.Range("D6")
    Sh2.Range("C" & k) = Sh1.Range("D8")
    Sh2.Range("D" & k) = Sh1.Range("D10")
    Sh2.Range("E" & k) = Sh1.Range("D12")
    Sh2.Range("F" & k) = Sh1.Range("D14")
    Sh2.Range("G" & k) = Sh1.Range("H6")
    Sh2.Range("H" & k) = Sh1.Range("H8")
    Sh2.Range("I" & k) = Sh1.Range("H10")
    Sh2.Range("J" & k) = Sh1.Range("H12")
    Sh2.Range("K" & k) = Sh1.Range("H14")
    Sh2.Range("L" & k) = Sh1.Range("D16")
    Sh2.Range("M" & k) = Sh1.Range("H16")
   
    Set Sh3 = Worksheets(Sh1.Range("D14").Value)
    If Sh3.Range("A2") = "" Then
        x = 2
    Else
        x = Sh3.Range("A1").End(xlDown).Row + 1
    End If
    Sh3.Range("A" & x) = x - 1
    Sh2.Range("B" & k, "M" & k).Copy Sh3.Range("B" & x)
End Sub
İlgi ve alakanız için çok teşekkür ederim fakat dosyayı açıp birkaç deneme yaptığımda girdiğim değerler TOPLU LİSTE ekranında alt alta kopyalanır ken yaş grubu seçiminin olduğu sayfalara maalesef aktarılmıyor ayrıca bir de sıra no yazan kısımlarda sayıları ben formül ile yazdırmıştım fakat herhangi bir satırdaki öğrenciyi silersem hata veriyor öğrenci sayısına göre sıra numarası değişecek şekilde ayarlamamız mümkün müdür
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,785
Excel Vers. ve Dili
Microsoft 365 Tr-64
YAŞ sayfalarını komple boşaltın. 2.satırdan sonra veri kalmasın hatta satırları komple silin
Alt sıralarda veri kalmış. Formülleri de silin, sıra numarasını ben otomatik veriyorum.
 
Katılım
2 Ekim 2015
Mesajlar
74
Excel Vers. ve Dili
2019 TR
YAŞ sayfalarını komple boşaltın. 2.satırdan sonra veri kalmasın hatta satırları komple silin
Alt sıralarda veri kalmış. Formülleri de silin, sıra numarasını ben otomatik veriyorum.
Dediğinizi yapınca sorunlar düzeldi düzenlemeleriniz 10 numara 5 yıldız olmuş size çok teşekkür ederim hakkınızı helal edin benim için uğraştınız bu arada bu kodları yazmayı nasıl öğrendiniz ben de öğrenmek için çabalıyorum ama çok başarılı olduğum söylenemez
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,785
Excel Vers. ve Dili
Microsoft 365 Tr-64
....bu arada bu kodları yazmayı nasıl öğrendiniz ben de öğrenmek için çabalıyorum ama çok başarılı olduğum söylenemez
Çalışarak, deneyerek, forumlarda soru çözerek. Forumlarda konu hakkında benden çok daha bilgi sahibi çok daha yetişmiş bir çok genç arkadaş var. Sanıyorum ki büyük bir kısmı Excel ve VBA yı bu forumlarda öğrenmiştir. Forumları takip edin.
 
Katılım
2 Ekim 2015
Mesajlar
74
Excel Vers. ve Dili
2019 TR
Çalışarak, deneyerek, forumlarda soru çözerek. Forumlarda konu hakkında benden çok daha bilgi sahibi çok daha yetişmiş bir çok genç arkadaş var. Sanıyorum ki büyük bir kısmı Excel ve VBA yı bu forumlarda öğrenmiştir. Forumları takip edin.
Merhabalar kusura bakmayın sizi tekrardan rahatsız ediyorum benim için yapmış olduğunuz dosya da şöyle bir sıkıntıyla karşılaşmaktayım öğrencinin TC kimlik no yu eksik yada fazla girdiğimde ve kaydet dediğimde uyarı alıyorum buraya kadar normal fakat düzeltip tekrar kaydet dediğimde aynı uyarıyı vermeye devam edip kaydetme işlemini yapmıyor. Ancak dosyayı kapatıp tekrar açınca düzeliyor ve kaydetmeye izin veriyor. bu hata için ne yapmak gerekiyor yardımcı olabilir misiniz ?
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,785
Excel Vers. ve Dili
Microsoft 365 Tr-64
HatalıKayıt değişkeni Public olarak tanımlandığı için Sıfırlanması gerekiyordu. Atlamışım. Şöyle bir ilave yapın

C++:
Sub Kaydet()
    HatalıKayıt = False 'İlave Satır
    Set Sh1 = Worksheets("KAYIT")
    Set Sh2 = Worksheets("TOPLU LİSTE")
 
Katılım
2 Ekim 2015
Mesajlar
74
Excel Vers. ve Dili
2019 TR
HatalıKayıt değişkeni Public olarak tanımlandığı için Sıfırlanması gerekiyordu. Atlamışım. Şöyle bir ilave yapın

C++:
Sub Kaydet()
    HatalıKayıt = False 'İlave Satır
    Set Sh1 = Worksheets("KAYIT")
    Set Sh2 = Worksheets("TOPLU LİSTE")
Çok teşekkür ederim sorun çözüldü :)
 
Katılım
2 Ekim 2015
Mesajlar
74
Excel Vers. ve Dili
2019 TR
HatalıKayıt değişkeni Public olarak tanımlandığı için Sıfırlanması gerekiyordu. Atlamışım. Şöyle bir ilave yapın

C++:
Sub Kaydet()
    HatalıKayıt = False 'İlave Satır
    Set Sh1 = Worksheets("KAYIT")
    Set Sh2 = Worksheets("TOPLU LİSTE")
Merhabalar takıldığım bir konu var internette değişik formları araştırdım ama istediğim gibi bir kod maalesef bulamadım sizden yine yardım istiyorum

sorunum şu : aidat adında bir sayfam var toplu listedeki kaydettiğim bütün öğrenciler aynı şekilde bu sayfada da mevcut ve her öğrenci bilgisinin karşısında aidat ödeme tarihi ve aidat miktarı mevcut (çift tıklayınca takvim açılıyor tarihi oradan seçiyorum)

Diyelim ki X öğrencisinin ödeme tarihini ve miktarını girip kaydet dediğimde bu verileri kopyalayıp bu öğrenci hangi sınıfta ise o sayfayı açsın öğrenciyi bulunsun ve öğrencinin karşısındaki hücrelerden boş olan ilk hücreye tarihi ve aidat miktarını kopyalasın
örnek dosyayı yükledim

ÖRNEK DOSYA
 
Üst