2016-10-24 3 views
0

Я запускаю скрипт VBA для автоматического заглаживания и удаления дефисов из вставленных данных в Excel. Этот сценарий отлично работает на одной линии паст (одноклеточных), но не будет работать (не делает ничего, чтобы изменить данные), если несколько строк данных вклеены в Ниже мой код:.Запуск VBA-кепок/замена скрипта на нескольких строках вставленных данных

Private Sub worksheet_change(ByVal target As Range) 
    Application.EnableEvents = False 
     With target 
     On Error Resume Next 
     Dim rng As Range 
     Set rng = Range("A:U") 

     If Not Intersect(target, rng) Is Nothing Then 
      If Not .HasFormula Then 
       .Value = UCase(.Value) 
       .Value = Replace(.Value, "-", "") 
      End If 
     End If 
    End With 
    Application.EnableEvents = True 
End Sub 

ответ

0

Try это

Private Sub worksheet_change(ByVal target As Range) 
    Application.EnableEvents = False 
    With target 
     On Error Resume Next 
     Dim rng As Range 
     Dim cell As Range 
     Set rng = Range("A:U") 

     If Not Intersect(target, rng) Is Nothing Then 
      For Each cell in target 
       If Not cell.HasFormula Then 
        cell.Value = UCase(cell.Value) 
        cell.Value = Replace(cell.Value, "-", "") 
       End If 
      next cell 
     End If 
    End With 
    Application.EnableEvents = True 
End Sub 
+0

@ElleryHiggins Я просто добавил новое редактирование, пожалуйста, взгляните; забыл изменить сторону назначения оператора – PartyHatPanda

+0

Работает отлично! Спасибо огромное! Это сэкономит столько времени! –

+0

Рад, что я мог помочь. Если он работает для вас, отметьте это как правильно, чтобы закрыть вопрос, как было сказано! – PartyHatPanda