VBA

2016-06-14 2 views
0

나는 나의 새로운 VBA 코드에 약간의 문제가 복사 할 때 여기에 VBA

가 무슨 일이야입니다 .. 모든 앞에 0을 잃는 : 을 나는 데이터베이스를 포함하는 두 개의 시트 (+1가 엑셀을). 시트 1은 전화 번호 G에 050-7080-6030/301-123-456/06-1234-4567 등의 전화 번호를 포함합니다.이 번호를 시트 2에 복사하고 동시에 "-"(나는 테이블을 생성함으로써 이것을 달성했습니다 - 다양한 이유에서 아래 코드를 참조하십시오.) 나는 단순히 값을 붙이기 위해 복사하는 부분에 녹음을 사용했다.이 값은 단지 잘 동작하지만, Sheet 2에서는 두 번째 매크로를 실행 한 후에 모든 선행 0을 잃어 버렸다. 전체 시트 (둘 다) 및 심지어 NumberFormat = 같은 VBA 코드에 대한 텍스트로 셀 서식을 적용하는 시도했다 ... 그러나 아무것도 작동하는 것. 어떤 생각이 어떻게 해결할 수 있습니까? 미리 감사드립니다! 문제는 Excel에서 교체를 처리하는 방식에 발생

Sub copy() 

'copy 

Rows("4:6").Select 
Selection.copy 
Sheets("Sheet2").Select 
Range("A4").Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
:=False, Transpose:=False 

End Sub 

Sub Multi_FindReplace() 

Dim wks As Worksheet 
Dim fndList As Integer 
Dim rplcList As Integer 
Dim tbl As ListObject 
Dim myArray As Variant 

Set wks = Sheets("Sheet2") 

Set tbl = Worksheets("DBs").ListObjects("Phone") 


Set TempArray = tbl.DataBodyRange 
myArray = Application.Transpose(TempArray) 


fndList = 1 
rplcList = 2 

With wks 

For x = LBound(myArray, 1) To UBound(myArray, 2) 

     .Range("G3:I100").Replace What:=myArray(fndList, x), Replacement:=myArray(rplcList, x), _ 
     LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=True, _ 
     SearchFormat:=False, ReplaceFormat:=False 


Next x 

End With 

End Sub 
+0

복사하기 전에 Sheet2의 셀을 텍스트로 포맷하면 정상적으로 작동해야합니다. –

+0

나는 너무 생각했다. 그러나 그것은 효과가 없다. 전체 시트에 그것을 적용하려고 시도했다. 단지 칼럼 만, 셀만했다. 매번 동일한 결과가 나온다. – llorcs

+0

접두어를 붙이는 궁극적 인 해결 방법을 시도해 봤니? 아포스트로피 (작은 따옴표)로? –

답변

1

: 다음은 코드입니다. 텍스트 문자열을 숫자로 다시 포맷하는 것은 물론 0을 맨 앞에 놓습니다.

바꾸기 명령을 사용하면 실제로 원래 서식이 유지됩니다.

On Error GoTo Done: 
Do 
Range("G3:I100").Select 
    Selection.Find(What:="-", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ 
     :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ 
     False, SearchFormat:=False).Activate 
     ActiveCell = Replace(ActiveCell.Value, "-", "") 
Loop 
Done: 

루프를 종료 할 조건이 없으므로 이것은 기술적으로 무한 루프입니다. 여기의 종료는 실제로 지정된 범위 내에서 "-"을 찾지 못해 생성 된 오류입니다.

검색 할 수있는 한정된 영역이있는 경우이 방법이 쉽습니다. 변수 영역이면 선택 선을 루프 앞에 정의 된 배열로 바꿉니다.

+0

고마워요! 이것은 실제로 작동합니다! Tho, 나를 위해 그것은 부분적으로 나의 경우에는 중국어/일본어 더블 바이트 문자가 있습니다. 그러나, 나는 다른 절반을 스스로 해결할 수있을 것 같습니다. 그렇지 않은 경우 다시 게시 할 수 있습니다. 불편을 끼쳐 드려 죄송합니다. 빠른 답장을 보내 주셔서 감사합니다 !! 매우 감사! – llorcs