2014-12-22 10 views
-2

아래 코드는 매우 반복적이어서 교체해야하는 단어가 하나씩 코드 세 줄에 끼어들 수있는 것처럼 보입니다. 어떻게해야할지 모르겠습니다.내 코드를 단순화하려는 경우

궁금한 점이 있다면 일반적인 오류를 찾아서 교체하는 코드 일뿐입니다. 이것은 Visual Basic입니다. 감사! 원래 값과 새 값

그리고 루프 내에서 한 번 Cells.Replace를 호출 배열을 통해 루프 (0 = 원래, 1 = 교체)를 포함

Cells.Replace What:=" uk ", Replacement:=" UK ", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:=" info ", Replacement:=" information ", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:="havant", Replacement:="haven't", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:="everytime", Replacement:="every time", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:="wouldnt", Replacement:="wouldn't", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:="couldnt", Replacement:="couldn't", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:="shouldnt", Replacement:="shouldn't", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:="scottish", Replacement:="Scottish", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:="havnt", Replacement:="haven't", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:="must of", Replacement:="must have", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:="on line", Replacement:="online", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:="help full", Replacement:="helpful", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:="xmas", Replacement:="Christmas", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:="christmas", Replacement:="Christmas", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:=" allot ", Replacement:=" a lot", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:="vip", Replacement:="VIP", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:="on line", Replacement:="online", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:=" usa ", Replacement:=" USA ", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:=" wales ", Replacement:=" Wales ", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:=" dif ", Replacement:=" did ", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
Cells.Replace What:=" saif ", Replacement:=" said ", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 

답변

3

당신은 다차원 배열 (http://msdn.microsoft.com/en-us/library/d2de1t93(v=vs.90).aspx)를 만들 수 있습니다

Dim newArray(5,1) as string 
newarray(0,0) = "info" 
newArray(0,1) = "information" 

For x = 0 to 5 
Cells.Replace What:=newArray(x,0), Replacement:=newArray(x,1), LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 

Next 
+0

정말 대단합니다. 감사합니다. 다른 아마추어 질문을 물어볼 것입니다. 어떻게 대체 할 수 있습니까? – Jac

+0

무슨 뜻인지 모르겠습니까? 배열 (newArray)에 더 추가하는 것을 의미합니까? – Mike

+0

걱정하지 마라, 나는 나 자신을 이해했다, 그렇게 많이 고마워한다! – Jac

0

모든 옵션을 지정하지 않으면 마지막 시간이 기억됩니다. 따라서 처음으로 지정한 후에 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False 이 중복되지 않습니다. 메서드와 같은 속성은 느린 함수 호출입니다. 각 라인은 4 개의 추가 함수를 호출하며 첫 번째 라인 이후에는 아무 것도 필요하지 않습니다.