• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Son dolu satırdan sonra kayıt

Katılım
26 Aralık 2008
Mesajlar
1,145
Excel Vers. ve Dili
EXCEL 2016 TÜRKÇE
Merhaba arkadaşlar aşağıda gönderdiğim kodda ben bir excel çalışmamda 2 UserForm kullanıyorum 1. UserFormda sayfanın 2 satırından itibaren Kaydettiğim verilerim var benim istediğim 2.UserFormdan Kayıt işlemi yaptığımda aynı sayfada son dolu satırdan 5 satır boş birakarak kaydetmeye devam etsin istiyorum yardımcı olursanız sevinirim.


Private Sub CommandButton1_Click()
On Error Resume Next

Set S1 = ThisWorkbook.Worksheets("" & ComboBox6)
For Each bak In Range("b15:b" & WorksheetFunction.CountA(Range("a15:a65536")))
Ara = S1.Range(bak.Offset(0, 0).Address).Value
SAra = S1.Range(bak.Offset(0, 1).Address).Value
If Ara = TextBox1 And SAra = TextBox2 Then
MsgBox "D İ K K A T Bu İsimde Zaten Bir Kayıt Var. Lütfen Başka Bir İsim Giriniz.", vbExclamation, ("Mükerrer Kayıt")
TextBox1.SetFocus
Exit Sub
End If
Next
Sonsatir = S1.Cells(65536, "A").End(3).Row
sno = Val(S1.Cells(Sonsatir, "A").Value)
If sno = 0 Then
sno = 1
S1.Cells(Sonsatir + 1, "A").Value = sno
ElseIf sno > 0 Then
S1.Cells(Sonsatir + 1, "A").Value = sno + 1
End If
S1.Cells(Sonsatir + 1, "B") = TextBox1.Text
S1.Cells(Sonsatir + 1, "C") = TextBox2.Text
S1.Cells(Sonsatir + 1, "D") = TextBox3.Text
S1.Cells(Sonsatir + 1, "E") = TextBox4.Text
S1.Cells(Sonsatir + 1, "F") = TextBox5.Text
S1.Cells(Sonsatir + 1, "G") = TextBox6.Text
S1.Range("A15:F65536").Select
Selection.Sort Key1:=S1.Range("A15"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

say = S1.Cells(65536, "A").End(3).Row
ListView1.ListItems.Clear
For i = 2 To say
Set liste1 = Me.ListView1.ListItems.Add(, , S1.Cells(i, "A").Value)
liste1.SubItems(1) = S1.Cells(i, "B").Value
liste1.SubItems(2) = S1.Cells(i, "C").Value
liste1.SubItems(3) = S1.Cells(i, "D").Value
liste1.SubItems(4) = S1.Cells(i, "E").Value
liste1.SubItems(5) = S1.Cells(i, "F").Value

Next i
ListView1.FullRowSelect = True
ListView1.Gridlines = True
MsgBox ("Verileriniz Kayıt edilmiştir."), vbCritical, ("Veri Kayıt")

Dim lvwItm As ListItem
Set lvwItm = ListView1.FindItem(TextBox1.Text, , , lvwPartial)

n = lvwItm.Index

ListView1.ListItems(n).Selected = True
ListView1.SelectedItem.EnsureVisible
ListView1.DropHighlight = ListView1.ListItems(n)

For tem = 1 To 19
Controls("textbox" & tem) = Empty
Next

TextBox1.SetFocus
TextBox20.Text = ""
End Sub
 
Son düzenleme:
arkadaşlar yardım eden yokmu yoksa soruyumu soramadım 1.UserFormdan seçilen verileri seçilen sayfaya kayıt ediyor. 2.UserFormdan seçilen verileri seçilen sayfada Kaydettiğimde o sayfanın son dolu satırını bularak 5 satır atlayarak sıra numarasını 1 den başlatarak kaydetmesini istiyorum. uğraştım fakat beceremedim yardımlarınızı bekliyorum.
kalın sağlıcakla.
 
Merhaba,

Daha önce 20. satırdan sonra yazmasını istemiştiniz. Bende bunda bir mantık bulamadığımı size açıkladım fakat yapmıştım. Çünkü orada da 20. satır dolduktan sonra işlem yapılmayacak demiştiniz.

Bence yine çalışmada mantık hatası yapıyorsunuz. Bu tür çözümler çalışmanızı biryerde tıkar, eğer 2 farklı form ile aynı sayfaya kayıt yapılıyorsa satır konumu yerine boş bir sütuna kayıt yapan formun ismini yada belli bir özelliğini yazmak daha mantıklı olur.

Bence siz konuyu tekrar gözden geçirin ve ona göre tekrar kurgulayın.
 
Sonsatir = S1.Cells(65536, "A").End(3).Row

yukarıdaki kodu

Sonsatir = S1.Cells(65536, "A").End(3).Row +5

olarak değiştirin fakat bu işlen her yapacağınız kaydın 5 satır ara ile kaydedilmesi anlamına gelir.
Eğer siz ilk yapıcağınız kaydın 5 satır aşağıya sonrakilerin normal ilerlemesini istiyorsanız.

sukardaki Sonsatir = S1.Cells(65536, "A").End(3).Row kısmını silip ekteki kodları araya yerleştirip test edemisiniz.


Kod:
For x1 = 2 To S1.Cells(65536, "A").End(3).Row
If S1.Cells(x1, 1).Value = "" Then
bos = bos + 1
ElseIf bos >= 5 Then
bos = 5
Else
bos = 0
End If
Next x1

If bos >= 5 Then
Sonsatir = S1.Cells(65536, "A").End(3).Row
Else
Sonsatir = S1.Cells(65536, "A").End(3).Row + 5
End If
 
Merhaba arkadaşlar dosyayı ekte gönderiyorum Form1 den açılan UserFormda verileri Seçilen sayfaya kayıt yapıyorum Form2 den de açılan UserFormdan Yine Seçilen sayfaya kayıt yapıyorum Form 2 Den Kayıt yaptığım zaman Sayfanın Son dolu satırından ilk kayıt 5 satır aşağıdan başlayarak sonraki kayıtların normal ilerlemesini ve sıra A sutununa sıra numarasınıda 1 den çaşlayarak devam etmesini istiyorum.
 

Ekli dosyalar

Sayın Ömer vermiş olduğunuz kon işime yarayacak bundan emin olunuz.
bu istediğim başka çalışmalarda kullanmak üzere istiyorum.
 
Merhaba arkadaşlar dosyayı ekte gönderiyorum Form1 den açılan UserFormda verileri Seçilen sayfaya kayıt yapıyorum Form2 den de açılan UserFormdan Yine Seçilen sayfaya kayıt yapıyorum Form 2 Den Kayıt yaptığım zaman Sayfanın Son dolu satırından ilk kayıt 5 satır aşağıdan başlayarak sonraki kayıtların normal ilerlemesini ve sıra A sutununa sıra numarasınıda 1 den çaşlayarak devam etmesini istiyorum.

Merhaba
Açıklamalarınız biraz kesintili olmuş.
Bir sayfaya aynı anda 1'den fazla kaydı nasıl yapacaksınız_?
Yoksa sayfa adını baz alarak mı işlem yapılacak_? Sayfa adı değiştiğinde veri girişi satırı mı değişecek_?
 
ilginiz için çok teşekkür ederim asi kral 1967 bey işimi hallettim.sağol.
 
Geri
Üst