我在Excel中有一個工作表,用戶必須在列C中輸入一些註冊號碼。這些數字通常由用戶通過一次複製粘貼其中的幾個來插入。複製源的格式通常是格式「000.000.000-00」,但我希望它只是在工作表中「00000000000」,沒有點和短劃線。Excel VBA - 如何更改用戶輸入的多個單元格的值?
我想在Excel VBA中開發一個代碼,在用戶鍵入或粘貼註冊號後自動刪除這些點和破折號。我需要它在同一個單元格中。的代碼是:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SkipEvents As Boolean
If SkipEvents Then Exit Sub
With ActiveWorkbook.Sheets("Staff")
If Not Application.Intersect(Target, Me.Range("C:C")) Is Nothing Then
SkipEvents = True
li = Intersect(Target, Range("C:C")).Row
nl = Intersect(Target, Range("C:C")).Rows.Count
lf = li + nl - 1
For i = li To lf
RegNumb = Range("C" & i).Value
If Len(RegNumb) = 14 Then
Range("C" & i).Value = Left(RegNumb, 3) & Mid(RegNumb, 5, 3) & Mid(RegNumb, 9, 3) & Right(RegNumb, 2)
End If
Next i
SkipEvents = False
End If
End With
End Sub
到目前爲止,代碼能夠去除的點劃線如果用戶鍵入或拷貝+一次粘貼一個登記號。但是,當用戶每次複製+粘貼2個或多個註冊號碼時,只有該範圍內的第一個單元格將其點和短劃線移除,而其他單元格保持原樣。有人可以幫我解決這個問題嗎?
它看起來好像你在迭代字符串。你可能會發現'替換(替換(字符串,「。」,「」),「 - 」,「」)' – Wilson