我在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