• DİKKAT

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

Otomatik Sıra no vermede hata

Katılım
15 Nisan 2009
Mesajlar
197
Excel Vers. ve Dili
Office 2010 Tr
Kırmızı satır hata veriyor.İşin içinden çıkamadım.Nasıl yapabilirim.Yardımcı olurmusunuz

Private Sub CommandButton1_Click()
Sheets("SAYFA2").Select
Range("A2").Select
If Range("A2") = "" Then
ActiveCell = 1
ActiveCell.Offset(0, 1) = TextBox1.Text
ActiveCell.Offset(0, 2) = TextBox2.Text
ActiveCell.Offset(0, 3) = TextBox3.Text
ActiveCell.Offset(0, 4) = TextBox4.Text
Else
'[65536].End(xlUp).Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveCell = ActiveCell.Offset(-1, 0) + 1
ActiveCell.Offset(0, 1) = TextBox1.Text
ActiveCell.Offset(0, 2) = TextBox2.Text
ActiveCell.Offset(0, 3) = TextBox3.Text
ActiveCell.Offset(0, 4) = TextBox4.Text

End If
End Sub
 
oradaki seçtiğiniz hücredeki bir önceki hücrede sayısal değer yok kesin.
Ondan hata verir.
2nci bir şıkta -1 demişsiniz
eğer A sütunu seçili ise -1 yazarsanız yine hata verir.OutOf range hatası verir kesin.
yani alan dışına çıklıldı
A sütunundan bir önceki sütun olamaz.
A sütunu ilk sütundur.falan,falan,falan.:cool:
 
Nasıl düzeltebilirim yada siz revize edermisiniz Evren Hocam.
 
Nasıl düzeltebilirim yada siz revize edermisiniz Evren Hocam.
oradaki hücrenize sayısal değer girin.string veya metin girmeyin.Sorun çözülür.
Ama a sütundan -1 geriye giderseniz olmaz.
Bunu tasarlamak size kalmış.
Vba konusunda kod yardımı yapılır ama projeyi tasarlamak yapan kişiye kalmıştır.Bu durumu siz halledeceksiniz.
Tabiiki bunun içinde bazı temel bilgileride bilmek gerekiyor.(örnek.A sütundan -1 ile geriye gidilemez,veya 2003 kullanıyoesanız 256 sütundan sonraki sütuna gidilemz .Yani offset(0,1) olamaz).:cool:
 
Ama Hocam
ActiveCell.Offset(1, 0).Select ' aktif hücrenin bir alt satırını seç
ActiveCell = ActiveCell.Offset(-1, 0) + 1 ' aktif hücrenin değeri= bir üstteki (-1) satırın değerini 1 arttır(+1) şeklinde düşünmüştüm.Sütun değerini düşünmemiştim.Acaba yanlışmı düşündüm.
 
Selamlar,

Neden hücre seçtirip kayıt işlemi yapıyorsunuz. Hücre seçmedende kayıt işlemi yapabilirsiniz. Eğer bir zorunluluğunuz yoksa kod içinde SELECT komutunu kullanmamaya özen gösterin.

İlk kod sizin kodun düzeltilmiş hali;

Kod:
Option Explicit
 
Private Sub CommandButton1_Click()
    Sheets("Sayfa2").Select
    Range("A2").Select
    If Range("A2") = "" Then
        ActiveCell = 1
        ActiveCell.Offset(0, 1) = TextBox1.Text
        ActiveCell.Offset(0, 2) = TextBox2.Text
        ActiveCell.Offset(0, 3) = TextBox3.Text
        ActiveCell.Offset(0, 4) = TextBox4.Text
    Else
        Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select
        ActiveCell = ActiveCell.Offset(-1, 0) + 1
        ActiveCell.Offset(0, 1) = TextBox1.Text
        ActiveCell.Offset(0, 2) = TextBox2.Text
        ActiveCell.Offset(0, 3) = TextBox3.Text
        ActiveCell.Offset(0, 4) = TextBox4.Text
    End If
End Sub


Aşağıdaki kodda SELECT komutuna ihtiyacınız yok;

Kod:
Option Explicit
 
Private Sub CommandButton1_Click()
    Dim Satır As Long
    With Sheets("Sayfa2")
        If .Range("A2") = "" Then
            .Range("A2") = 1
            .Range("A2").Offset(0, 1) = TextBox1.Text
            .Range("A2").Offset(0, 2) = TextBox2.Text
            .Range("A2").Offset(0, 3) = TextBox3.Text
            .Range("A2").Offset(0, 4) = TextBox4.Text
        Else
            Satır = .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
            .Cells(Satır, 1) = Satır - 1
            .Cells(Satır, 2) = TextBox1.Text
            .Cells(Satır, 3) = TextBox2.Text
            .Cells(Satır, 4) = TextBox3.Text
            .Cells(Satır, 5) = TextBox4.Text
        End If
    End With
 
    MsgBox "Kayıt işlemi tamamlanmıştır.", vbInformation
End Sub
 
Korhan bey vermiş olduğunuz bilgi için teşekkür ederim . istediğim buydu
 
Evet doğru söylüyorsunuz.Gözümden kaçmış.
Bu ilk değer satır içindir,virgülden sonraki değer sütun içindir.
Ama söylediklerim bu seferde satır için geçerlidir.
mesela 1nci staır seçili iken o kodu kullanırsanız yine hata oluşacaktır.:cool:
Korhan bey cevabı vermiş.
bende ayni kanaatteyim.
İşlemleriniz sayfa seçmeden yada hücre seçmeden yaparsanız işlemleriniz dahada hızlanacaktır.
Kolay gelsin.:cool:
Ama Hocam
ActiveCell.Offset(1, 0).Select ' aktif hücrenin bir alt satırını seç
ActiveCell = ActiveCell.Offset(-1, 0) + 1 ' aktif hücrenin değeri= bir üstteki (-1) satırın değerini 1 arttır(+1) şeklinde düşünmüştüm.Sütun değerini düşünmemiştim.Acaba yanlışmı düşündüm.
 
Anlayışınız ve ilginiz için teşekkür ederim.
 
Geri
Üst