satır silme

Katılım
1 Şubat 2007
Mesajlar
516
Excel Vers. ve Dili
excel2003
slm
ardım forumda bulamadım. Kayıt yap tuşu ile isim alfabetik olarak B sütununa ve diğer veriler ismin kaydedildiği satırın diğer hücrelerine kayıt yapıyor. A sütununa otomatik olarak sıra numarası veriyor. Verileri ListBox tan seçerek silmek istiyorum. Ancak sileceğim satırdaki A sütunundaki sıralanan sıra numarası bozulmaması gerekiyor. Yani 20 kişilik bir listeden 10. sıradaki bir ismi silmek istediğimde ilgili satırı silecek ancak sıra numarası değişmeyecek.A sütununda silindikten sonra en son veri 19 olacak. Teşekkürler..

Forumda aşağıdaki şekilde bir kod buldum ama çalışmıyor.
Private Sub sil_Click()
On Error Resume Next
Sheets("veri").Select
If A.Text = "sıra no" Then
MsgBox "sıra no Değeri silinemez, program tarafından kullanılıyor...", , "Sil Hatası!!!"
Exit Sub
End If
Dim say As Integer
Dim I As Integer
Dim bos As Range
For Each bos In Range("B1:B" & WorksheetFunction.CountA(Range("B1:B65000")))
If B.Value = "" Or bos = "" Or ActiveCell = "" Then
MsgBox "Önce kaydını sileceğiniz kişiyi listeden seçmelisiniz."
Exit Sub
End If
Next bos
If MsgBox(B.Value & " isimli kişiye ait kayıt tamamen silinecek, silmek istiyor musunuz?", vbQuestion + vbYesNo, "Dikkat") = vbYes Then

Range(ActiveCell.Offset(0, -1).Address(False, False) & ":" & ActiveCell.Offset(0, 16).Address(False, False)).Delete Shift:=xlUp
say = WorksheetFunction.CountA(Range("A2:A65500"))
For I = 1 To say
Cells(I + 1, 1) = I
Next I

A.Value = WorksheetFunction.Count(Range("A1:A65500")) + 1
MsgBox " " & B.Value & " isimli kişiye ait tüm bilgiler silinmiştir.", vbInformation, "Sendika Programı"
formutemizle_Click

ComboBox2_Change
A.SetFocus
Unload Personel
Personel.Show
End If
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,656
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Vermiş olduğunuz kodda zaten sıra no veren kodlama mevcut. Sadece aşağıdaki şekilde düzenlemeniz gerekiyor.

Mevcut kod;
Kod:
say = WorksheetFunction.CountA(Range("A2:A65500"))
For I = 1 To say
Cells(I + 1, 1) = I
Next I
Düzenlenmiş hali;
Kod:
[A2:A65536].ClearContents
Say = WorksheetFunction.CountA(Range("B2:B65536"))
For X = 2 To Say
If Cells(X,2)<>"" Then Cells(X, 1) = X
Next X
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,656
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Bu durumda &#246;rnek dosyan&#305;z&#305; eklemenizi &#246;neririm. Beraber kontrol edelim hata nerden kaynaklan&#305;yor.
 
Katılım
1 Şubat 2007
Mesajlar
516
Excel Vers. ve Dili
excel2003
Dosya ektedir. Ayrıca İlgilendiğiniz için teşekkürler.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,656
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

San&#305;r&#305;m daha &#246;nce haz&#305;rlan&#305;&#351; bir &#246;rnek dosyay&#305; kendinize uyarlamaya &#231;al&#305;&#351;&#305;yorsunuz.

Anlad&#305;&#287;&#305;m kadar&#305;yla kodlar&#305;n&#305;z&#305; a&#351;a&#287;&#305;daki &#351;ekilde de&#287;i&#351;tirdim.

ListBox1_Click kodunuzu a&#351;a&#287;&#305;daki ile de&#287;i&#351;tirin.
Kod:
Private Sub ListBox1_Click()
    On Error Resume Next
    Set SATIR = [veri!B:B].Find(ListBox1, LookAt:=xlWhole)
    If Not SATIR Is Nothing Then
    Cells(SATIR.Row, 2).Select
    sil.Enabled = True
    degistirguncelle.Enabled = True
    kay&#305;t.Enabled = False
    ComboBox2.SetFocus
    End If
End Sub

sil_Click kodunuza da a&#351;a&#287;&#305;daki &#351;ekilde de&#287;i&#351;tirip denermisiniz.

Kod:
Private Sub sil_Click()
    On Error Resume Next
    Sheets("veri").Select
    Set &#304;S&#304;M = ActiveCell
    If ActiveCell = "" Then
    MsgBox "&#214;nce kayd&#305;n&#305; silece&#287;iniz ki&#351;iyi listeden se&#231;melisiniz."
    Exit Sub
    End If
    If MsgBox(&#304;S&#304;M & " isimli ki&#351;iye ait kay&#305;t tamamen silinecek, silmek istiyor musunuz?", vbQuestion + vbYesNo, "Dikkat") = vbYes Then
    Range(ActiveCell.Offset(0, -1).Address(False, False) & ":" & ActiveCell.Offset(0, 16).Address(False, False)).Delete Shift:=xlUp
    [A2:A65536].ClearContents
    For x = 2 To [B65536].End(3).Row
    If Cells(x, 2) <> "" Then Cells(x, 1) = x - 1
    Next x
    
    MsgBox " " & &#304;S&#304;M & " isimli ki&#351;iye ait t&#252;m bilgiler silinmi&#351;tir.", vbInformation, "Sendika Program&#305;"
    formutemizle_Click
    ComboBox2_Change
    A.SetFocus
    Unload Personel
    Personel.Show
    Set &#304;S&#304;M = Nothing
    End If
End Sub
 
Katılım
1 Şubat 2007
Mesajlar
516
Excel Vers. ve Dili
excel2003
Hocam bi sorunumuz daha var. Bu kodlarla silme i&#351;lemi sorunsuz &#231;al&#305;&#351;&#305;yor ancak listbox tan se&#231;ti&#287;imiz isme ait bilgiler ComboBox lara gelmiyor. Bunu nas&#305;l gideririz.
 
Katılım
1 Şubat 2007
Mesajlar
516
Excel Vers. ve Dili
excel2003
yokmu yard&#305;m edecek kimse
 
Üst