2012-06-21 24 views
5

Excelのファイルを持ち、数値を入力するために1つの列を検証しますが、数値が18より小さいかのように書式設定されて先頭のゼロが追加されます。しかし、今では15桁目の数字が0に変換されます。例: "002130021300020789"、9は0に変更されます。テキストを列に変換した後、それを受け入れますが、先行ゼロを追加することはできません。 onluの数字を入力する。数字だけを入力するようにセルを制限する方法

ご協力いただきありがとうございます。

+0

+ 1良い質問:) –

答えて

2

MS Articleゼロを追加することができます

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

をテキストに、セルの書式を変更することができます:Excelが浮動小数点数を格納し、計算方法IEEE 754 specificationを次の。したがってExcelは数字に15桁の有効桁のみを格納し、15桁目以降の桁を0に変更します。

数字の書式を取得し、ユーザーが数字だけを入力できるようにするには、これを行うことができます。私はあなたが範囲A1のテキストを検証していると仮定しています。該当する場合は改訂してください。

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 

フォロー

あなたがコピーして貼り付けているなら、あなたは最初のフォーマットに範囲G11を持っています:手動TEXTとして、その後

SNAPSHOTこのコードを使用G65536 (数値貼り付けの場合)

enter image description here

SNAPSHOT(貼り付け数値以外の値)

enter image description here

CODE

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

あなたの提案とコードのヘルプのためのThaks。しかし、私は別のシートからデータをコピーしているときに、15桁の後に値を貼り付けた後、ゼロに変換され、列全体を検証する方法G11:g65536。 – user1049518

+0

ワークシートの変更イベントでコピーの貼り付けをキャプチャすることもできます。例を挙げてみましょう:) –

+0

投稿更新日: –

1

まず、あなたは、あなたが

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

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

+1この制限を回避する別の方法:) –

関連する問題