• DİKKAT

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

excel hücresinden alınan sayının labelda bir üstü görülmesi

byfika

Altın Üye
Altın Üye
Katılım
15 Ağustos 2009
Mesajlar
512
Excel Vers. ve Dili
Excel Vers. ve Dili : Ofis 2016 Tr
Merhabalar,
Userform üzerindeki textboxlar ve comboboxlarla , commandbuttonlarla kaydet,bul, değiştir ve sil komutları ile excele alt alta veriler girilmekte. Bir textboxda bir sütuna alt alta sayı girilmekte. Girilen sayıların en büyüğünü +1 olarak (girilen sayının bir üstünü) alttaki kodla bulup userform üzerindeki bir label üzerine yazdırılmakta.
UserForm_Initialize ve commandbuttonlarda kodlarında alttaki kod yazılı.
İlgili sütunu hücre biçimlendirmeden sayı yapıldı.
Veri girildiğinde aktif hücreye sayıyı yazmasına rağmen hücrede ekteki resimdeki hatayı vermekte, userformdaki labelda girilen sayının bir üstünü göstermiyor.
Ancak excel sayfasındaki hatalı hücreye gidip hata penceresinden sayıya dönüştüre tıkladığımda labeldaki sayı girilen sayının bir üstüne dönüşmekte ve yapılmak istenen yeni işleme kadar doğru olmakta.
Resimde her veri girişinde sırayla :
5110 girildiğinde label 5111,
5111 girildiğinde label 5112
5112 girildiğinde label 5113 yazması. Bu rakamlar 1 den başlayıp devam etmekte buradaki rakamlar örnek girildi.)
Sayı girildiğinde hata vermemesini ve labelda girilen sayının bir üstünü nasıl sağlayabilirim.
KOD:
Label41 = WorksheetFunction.Max(Sayfa1.Range("C2:C65536"), 1) + 1
 

Ekli dosyalar

  • maksimum hatası.jpg
    maksimum hatası.jpg
    28.2 KB · Görüntüleme: 7
Son düzenleme:
Örnek dosya eklerseniz yardımcı olmaya çalışacağım.
 
Merhabalar, örnek dosya ekledim. Sadece ilk üç veri kaydı bıraktım. Userforma veri girilince label gözlendiğinde hata görülmekte. labelda 4 görülmesi gerekirken 3 görülüyor. sayfa c3 hücresindeki hata açılıp sayıya dönüştür tıklandığında label 4e dönüşecektir.
 

Ekli dosyalar

Metinsel veri olduğundan sayı biçiminde olmalı.

Formun initialize yordamına.

Kod:
Private Sub UserForm_Initialize()
Dim a(), son, i
son = Sayfa1.Range("A65536").End(3).Row
a = Sayfa1.Range("C2:C" & son).Value
    For i = 1 To UBound(a)
        a(i, 1) = a(i, 1)
    Next i
Sayfa1.Range("C2:C" & son).NumberFormat = "#,##0"
Sayfa1.Range("C2:C" & son).Value2 = a
Label41 = Application.Max(a) + 1
End Sub


Kaydet butonona.

Kod:
Private Sub cmdKaydet_Click()
    If AdıBoşmu Then Exit Sub
    If TCNOBoşmu Then Exit Sub
    If Application.WorksheetFunction.CountIf(Range("A:A"), txtAdı.Value) > 0 Then
    MsgBox "Girmekte olduğunuz adı veritabanında kayıtlıdır!...", vbCritical
    Exit Sub
End If
With Sheets("KAYIT")
satır = .Range("A65536").End(3).Row + 1



.Cells(satır, 3).NumberFormat = "#,##0"



.Cells(satır, 1) = txtAdı
.Cells(satır, 2) = txtTcNo
.Cells(satır, 3) = txtÜyeno
    MsgBox "Kayıt tamamlandı."
    'DİĞER İŞLEMLER
    cmdTemizle_Click ' Formu Temizleme
    Label41 = WorksheetFunction.Max(Sayfa1.Range("C2:C65536"), 1) + 1  ' Textbox 3 e +1 ile verilecek  no, +1 yoksa son verilen  no
    End With
End Sub

kodları bu şekilde denyin.
 
Merhabalar
Alternatif olarak
cmdKaydet kodundaki .Cells(satır, 3) = txtÜyeno kodunu .Cells(satır, 3) = CLng(txtÜyeno) olarak değiştirseniz bundan sonraki numaralar metin değilde sayı olarak algılayacak.
 
Merhabalar, Sayın işsiz123,
Örnek dosyada kodu denedim, çalışıyor. Bilgi için teşekkürler.
 
Merhabalar, Sayın Ziynettin,
Vermiş olduğunuz kodları ana dosyaya uyarladım. Verilen noyu yazmıyor. Zannediyorum bundan dolayı Labelda değişiklik olmuyor,
Bilgi için teşekkürler...
 
Geri
Üst