문자열 길이에 따라 텍스트 문자열의 특정 지점에 하이픈을 삽입하거나 해당 지점 다음의 모든 텍스트를 삭제하는 매크로를 작성하려고합니다.코드가 메모리를 오버로드하거나 VBA를 컴파일하지 않습니다.
즉 - 6 개 문자는 문자 사이에 4 + 5 하이픈을 삽입하거나 문자 4 후 모든 텍스트를 삭제하는 경우 - 7 개 문자, 문자 사이에 5 + 6 하이픈을 삽입하거나 문자 후 모든 텍스트를 삭제하면 5
이상적으로 나는 텍스트를 하이픈 넣기보다는 그 지점에서 문자열을자를 수 있기를 원합니다.하지만 하이픈을 사용하기로 결정하고 주위를 돌아볼 때 내 머리를 갖지 못해서 찾기 만하면됩니다. '을 눌러 원하지 않는 문자를 제거하십시오. 작은 샘플 세트에서이 작업을 수행 할 수 있지만 100-300 셀을 설정하지만 70,000 개 이상의 셀이있는 통합 문서를 살펴볼 수있는 코드가 필요합니다. 나는 메모리 문제를 막기 위해 코드를 조정 해 보았지만 이제는 제대로 작동하지 않는 것처럼 보였다.
Sub Postcodesplitter()
Dim b As Range, w As Long, c As Range, x As Long, d As Range, y As Long
For Each b In Selection
w = Len(b)
If w = 8 And InStr(b, "-") = 0 Then b = Application.WorksheetFunction.Replace(b, 15 - w, 0, "-")
For Each c In Selection
x = Len(c)
If x = 7 And InStr(c, "-") = 0 Then c = Application.WorksheetFunction.Replace(c, 13 - x, 0, "-")
For Each d In Selection
y = Len(d)
If y = 6 And InStr(d, "-") = 0 Then d = Application.WorksheetFunction.Replace(d, 11 - y, 0, "-")
Next
Next
Next
End Sub
내가 원래 작성한 코드이지만 300 개의 대상 셀에 메모리 문제가 발생했습니다. 나는 최고의 시간에도 꽤 나쁜 코더지만, 친구로부터 조언을 받아서이 대신에 노력했다.
Sub Postcodesplitter()
Dim b As Range, x As Long
If (Len(x) = 6) Then
b = Application.WorksheetFunction.Replace(b, 11 - x, 0, "-")
Else
If (Len(x) = 7) Then
b = Application.WorksheetFunction.Replace(b, 13 - x, 0, "-")
Else
If (Len(x) = 8) Then b = Application.WorksheetFunction.Replace(b, 15 - x, 0, "-")
End Sub
하지만 컴파일 할 때 오류가 발생합니다. 나는 뭔가 정말 실종 된 것 같은 기분이 든다.
팁이 있습니까?
어떤 오류가 반환됩니까? – Taemyr
'끝이 없으면 차단'. 'End If'를 입력하면 동일한 오류가 발생합니다. 2를 입력하면 오류는 발생하지 않지만 코드를 실행하면 결과가 생성되지 않습니다. 만약 내가 3을 입력하면 'If Without Block If' –