У меня есть рабочий лист в 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