2012-06-21 11 views
5

Yalnızca bir sayı sütununu girmek için bir sütunu doğrulayan bir excel dosyası var, ancak sayı 18'den küçük bir sayı olarak biçimlendirilmiş, baştaki sıfırlar eklenecek. Ama şimdi 15 basamaktan sonraki rakam 0'a dönüşecek: "002130021300020789", dokuz tane 0 olarak değiştirildi. Sütunu metne dönüştürdükten sonra, kabul eden ancak baştaki sıfırları ekleyemedim ve kısıtlayamıyorum onlu sayıları girmek için.Yalnızca sayıların girilmesi için hücre kısıtlama

Herhangi bir yardım için teşekkür ederiz .. şimdiden teşekkürler. Excel depolamak ve kayan nokta sayıları hesaplamak için nasıl IEEE 754 specification izler:

+0

+ 1 İyi Soru :) –

cevap

2

MS Article sıfır ekleyebilir

Range("A1").NumberFormat = "@" 

metne hücrenin biçimini değiştirebilir . Excel bu nedenle, bir sayıya yalnızca 15 anlamlı basamak kaydeder ve on beşinci basamaktan sonraki basamakları sıfırlar.

Numara biçimlendirmenizi almak ve ayrıca kullanıcının yalnızca sayıları girmesini sağlamak için bunu yapabilirsiniz. A1 aralığındaki metni doğruladığınız varsayılıyor. Lütfen uygun şekilde değiştirin.

Private Sub Worksheet_Change(ByVal Target As Range) 
    On Error GoTo Whoa 

    Application.EnableEvents = False 

    If Not Intersect(Target, Range("A1")) Is Nothing Then 
     '~~> If entered text is not a number then erase input 
     If Not IsNumeric(Range("A1").Value) Then 
      MsgBox "invalid Input" 
      Application.Undo 
      GoTo LetsContinue 
     End If 

     Range("A1").Value = "'" & Format(Range("A1").Value, "000000000000000000") 
    End If 

LetsContinue: 
    Application.EnableEvents = True 
    Exit Sub 
Whoa: 
    MsgBox Err.Description 
    Resume LetsContinue 
End Sub 

İZLEMİNDE

Eğer kopyalayıp yapıştırmak için o zaman ilk biçimine Aralığı G11 yapmak zorunda kalırsak: Manuel METİN olarak ve sonra bu kodu

SNAPSHOT kullanmak G65536 (Sayısal Değerleri Yapıştırırken)

enter image description here

ANLıK (zaman Yapıştırma Sigara Sayısal Değerler)

enter image description here

KOD

Private Sub Worksheet_Change(ByVal Target As Range) 
    On Error GoTo Whoa 

    Dim cl As Range 

    Application.EnableEvents = False 

    If Not Intersect(Target, Range("G11:G" & Rows.Count)) Is Nothing Then 
     For Each cl In Target.Cells 
      '~~> If entered text is not a number then erase input 
      If Not IsNumeric(cl.Value) Then 
       MsgBox "invalid Input" 
       Application.Undo 
       GoTo LetsContinue 
      End If 

      cl.Value = "'" & Format(cl.Value, "000000000000000000") 
     Next 
    End If 

LetsContinue: 
    Application.EnableEvents = True 
    Exit Sub 
Whoa: 
    MsgBox Err.Description 
    Resume LetsContinue 
End Sub 
+0

Önerileriniz ve kod yardımlarınız için teşekkürler. Ancak verileri başka bir sayfadan ele aldığımda, 15 basamaktan sonra değerleri yapıştırdıktan sonra sıfırlara dönüşecek ve tüm sütun G11: g65536'nın nasıl doğrulanacağı. – user1049518

+0

Kopyala yapıştır, çalışma sayfası değiştirme etkinliğinde de ... Bana bir örnek vereyim :) –

+0

Son Güncelleme :) –

1

Önce Sonra

cellvalue2 = Format(cellvalue1, "000000000000000") // for numeric fields 

        or 
      = TEXT(cellvalue1,"000000000000000") // for textfields 
+0

1 bu sınırlamayı atlamak için başka bir yol :) –

İlgili konular