저는 Excel VBA의 초보자이며 이름과 전화 번호가 포함 된 열에서 셀을 몇 개 가져 와서 전화 번호를 잘라냅니다. 그 셀을 다른 열에 붙여 넣으면 이름이있는 셀 하나와 숫자가있는 셀이 생깁니다.한 셀에서 다른 셀로 문자를 이동하면 무한 루프가 발생합니다.
무엇인가의 이유로 내 프로그램이 무한 루프로 진행됩니다.
나는 그것이 sLen = sLen - 1
& j = j - 1
에 의해 발생했는지 확신하지만, 어떻게 해결해야할지 모르겠다.
for j = sLen to 1 step -1
지금 당신이 그것을 줄 J = J-1을 ommit 수 : 대신 오른쪽과 같이 오른쪽 또는 왼쪽으로 이동 왼쪽 갈 수 있도록 J를 조작 주위에 너무 장난의
Sub loop_macro()
Dim myStr As String
Dim i As Integer
For i = 5 To 15
myStr = movePhone(Cells(i, 2), i)
Cells(i, 5) = myStr
Next i
End Sub
Function movePhone(s As String, rowNum As Integer) As String
Dim retval As String // This is the return string to be copied to column 5
Dim j As Integer // Counter for character position.
Dim sLen As Integer
retval = ""
sLen = Len(s)
For j = 1 To sLen
If Mid(s, j, 1) >= "0" And Mid(s, j, 1) <= "9" Then
retval = retval + Mid(s, j, 1)
Cells(rowNum, 2) = Mid(Cells(rowNum, 2), j, 1) // remove digit from cell
sLen = sLen - 1
j = j - 1
ElseIf Mid(s, j, 1) = "-" Then
retval = retval + Mid(s, j, 1)
Cells(rowNum, 2) = Mid(Cells(rowNum, 2), j, 1) // remove "-" char from cell
sLen = sLen - 1
j = j - 1
End If
Next
movePhone = retval
End Function
'sLen = sLen-1' 및'j = j-1' 행을 삭제하십시오. 코드는 예상대로 작동해야합니다. Btw, Cells (rowNum, 2) = Mid (Cells (rowNum, 2), j, 1)'숫자 또는'-'을 제거하지 않고 대신이 문자 만 남김 –
셀이 제거 중입니다. 그러나 그것은 당신이 쓴 두 번째 이유 때문일 수 있습니다. 나는 그것을 고치려고 노력할 것이다. – ubonozur