2012-06-21 3 views
5

숫자를 입력하는 하나의 열의 유효성을 검사하는 Excel 파일이 있지만 숫자가 18보다 작은 것처럼 서식이 지정되어 선행 0이 추가됩니다. 하지만 이제 15 번째 숫자 이후의 숫자가 0으로 변환됩니다. 예 : "002130021300020789", 9는 0으로 변경됩니다. 텍스트를 열로 변환 한 후 해당 수락하지만 선행 0을 추가 할 수 없으며 제한 할 수 없습니다 onlu 번호를 입력하십시오.숫자 만 입력하도록 셀을 제한하는 방법

감사합니다. 사전에 감사드립니다. 엑셀 저장 및 부동 소수점 숫자를 계산하는 방법에 IEEE 754 specification을 다음과

+0

+ 1 좋은 질문 : –

답변

2

MS Article를 제로를 추가 할 수 있습니다

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

을 텍스트로 셀의 형식을 변경할 수 있습니다 . 따라서 Excel은 숫자에 15 자리 만 유효 숫자를 저장하고 15 번째 자리 이후에 숫자를 0으로 변경합니다.

숫자 서식을 지정하고 사용자가 숫자 만 입력하도록하려면이 작업을 수행 할 수 있습니다. Range 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에있는 경우 수동으로 텍스트로 다음이 코드를

스냅 샷을 사용 G65536 (숫자 값 붙여 넣기시)

,858,428,435,942,163,210

스냅 (때 붙여 넣기 숫자가 아닌 값)

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

당신의 제안과 코드 도움을위한 탁신 그러나 다른 시트의 데이터를 복사 할 때 15 자리 숫자를 붙여 넣은 후에 0으로 변환되며 전체 열 G11 : g65536의 유효성을 검사하는 방법을 설명합니다. – user1049518

+0

워크 시트 변경 이벤트에도 복사 붙여 넣기를 캡처 할 수 있습니다 ... 예를 들어 보겠습니다. –

+0

게시 된 업데이트 : –

1

먼저 그럼 당신은

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

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

+1이 제한을 우회하는 또 다른 방법 : –

관련 문제