"ActiveCell.Row" yerine ne kullanılabilir?

Katılım
2 Mayıs 2011
Mesajlar
33
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
30-10-2020
Merhaba arkadaşlar ve değerli üstadlar;

Aşağıdaki koddaki gibi mevcut sayfada bulunduğumda excel sayfasındaki silme işlemini gerçekleştirebiliyorum. Fakat benim istediğim başka bir sayfadayken bunu nasıl yapacağım.

Mesela Sayfa2'deki verileri Sayfa2'de bulunurken aşağıdaki kod yardımıyla silebiliyorken Sayfa1'de bulunduğumda bunu nasıl gerçekleştirebilirim?

Kod:
Private Sub sil_Click()
    If id.Value <> "" Then
   
        Dim Komut As Integer
        Dim Mesaj As String
        Dim Baslik As String
   
        Mesaj = adi_soyadi.Value & " adlı personel, veritabanından kaldırılacaktır." & vbLf & vbLf & "Bu işlemin geri dönüşü yoktur. Onaylıyor musunuz?"
        Baslik = "Silme İşlemi"
        Komut = MsgBox(Mesaj, vbYesNo + vbExclamation, Baslik)
       
            If Komut = 6 Then
                Rows(ActiveCell.Row).Delete
                    id.Value = ""
                    kurum_sicil.Value = ""
                    adi_soyadi.Value = ""
                   
                MsgBox "Personel veritabanından kalıcı olarak silinmiştir."
            End If
    Else
   
        MsgBox "Öncelikle -Bul- butonu yardımıyla bir kayıt seçiniz.", vbExclamation

    End If
End Sub
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Hangi satırı sileceğiniz nasıl bilinecek?
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Aşağıdaki gibi olur.
Sayfa2 de aktif olan satır silinecektir.

Kod:
Private Sub sil_Click()
    If ID.Value <> "" Then
        Dim Komut As Integer
        Dim Mesaj As String
        Dim Baslik As String
        Mesaj = adi_soyadi.Value & " adlı personel, veritabanından kaldırılacaktır." & vbLf & vbLf & "Bu işlemin geri dönüşü yoktur. Onaylıyor musunuz?"
        Baslik = "Silme İşlemi"
        Komut = MsgBox(Mesaj, vbYesNo + vbExclamation, Baslik)
        If Komut = vbYes Then
            Worksheets("Sayfa2").Rows(Worksheets("Sayfa2").ActiveCell.Row).Delete
            ID.Value = ""
            kurum_sicil.Value = ""
            adi_soyadi.Value = ""
            MsgBox "Personel veritabanından kalıcı olarak silinmiştir."
        End If
    Else
        MsgBox "Öncelikle -Bul- butonu yardımıyla bir kayıt seçiniz.", vbExclamation
    End If
End Sub
 
Katılım
2 Mayıs 2011
Mesajlar
33
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
30-10-2020
Arkadaşlar yoğunluktan bu mesaja dönememiştim. Yardımlarınız için teşekkür ediyorum. Fakat dalgalikur adlı arkadaşımızın verdiği
Kod:
            Worksheets("Sayfa2").Rows(Worksheets("Sayfa2").ActiveCell.Row).Delete
kod satırı işimi çözmedi. Yardımcı olabilecek arkadaşlardan yardımlarını bekliyorum.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Başka sayfadaki aktif satırı diğer bir sayfadan bu yöntemle tespit edemezsiniz.

Dosya açılışında ya da sayfalar arası gezerken silme işlemi yapacağınız sayfadaki aktif satır bilgisi bir sayfaya yazdırılarak sonuca gidilebilir.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Sayfa2 nin kod kısmına aşağıdaki kodu kopyalayın.

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Set SeciliHucre = ActiveCell
End Sub
Yeni bir module oluşturun aşağıdaki kodu module kopyalayın..

Kod:
Public SeciliHucre As Range
Yukarıda verdiğim kodları da aşağıdakiler ile değiştirin.
Kod:
Private Sub sil_Click()
    If ID.Value <> "" Then
        Dim Komut As Integer
        Dim Mesaj As String
        Dim Baslik As String
        Mesaj = adi_soyadi.Value & " adlı personel, veritabanından kaldırılacaktır." & vbLf & vbLf & "Bu işlemin geri dönüşü yoktur. Onaylıyor musunuz?"
        Baslik = "Silme İşlemi"
        Komut = MsgBox(Mesaj, vbYesNo + vbExclamation, Baslik)
        If Komut = vbYes Then
            Worksheets("Sayfa2").Rows(SeciliHucre.Row).Delete
            ID.Value = ""
            kurum_sicil.Value = ""
            adi_soyadi.Value = ""
            MsgBox "Personel veritabanından kalıcı olarak silinmiştir."
        End If
    Else
        MsgBox "Öncelikle -Bul- butonu yardımıyla bir kayıt seçiniz.", vbExclamation
    End If
End Sub
 
Katılım
2 Mayıs 2011
Mesajlar
33
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
30-10-2020
İlgilendiğiniz için teşekkür ederim. Olayı şu şekilde detaylandırırsam daha iyi yardımcı olunur düşüncesindeyim.

Userform kullanarak;

Kod:
Private Sub txtadsoyad_Change()
txtadsoyad.Value = StrConv(txtadsoyad.Value, vbProperCase)
On Error Resume Next
Dim bul As Range
Set bul = Sheets("Personel Veritabanı").Columns(3).Find(what:=txtadsoyad, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
kurum_sicil.Caption = bul.Offset(0, -1).Value
esno.Caption = bul.Offset(0, 15).Value
tc_kimlik.Caption = bul.Offset(0, 2).Value
adi_soyadi.Caption = bul.Offset(0, 0).Value
ogrenim_durumu.Caption = bul.Offset(0, 6).Value
ceptel.Caption = bul.Offset(0, 7).Value
unvan.Caption = bul.Offset(0, 1).Value
birim.Caption = bul.Offset(0, 4).Value
baslama_tarih.Caption = bul.Offset(0, 8).Value
End Sub
yukardaki metodla aslında DÜŞEYARA kullanarak textbox aracılığıyla label'lara silinecek kişinin bilgilerini çağırıyorum. Bunu da Sayfa1'de gerçekleştiriyorum (buton yardımıyla). İlgili kişiyi bulup labellara taşıyor.

Sizin de bildiğiniz üzere sililinecek verilerin farklı sayfada olması ve Rows(ActiveCell.Row).Delete koduyla silinecek satırı bilmediğinden bu işlemi yapamıyor. Bu konuda yardımınızı bekliyorum. Umarım anlatabilmişimdir.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Siz DÜŞEYARA değilde CTRL+F (BUL) işlevini kullanıyorsunuz.

Bu sebeple "Activecell" komutu ile uğraşmanıza gerek yok.

Aşağıdaki kod satırı istediğinizi yapar.

Kod:
Bul.EntireRow.Delete
 
Üst