Я пытаюсь автоматизировать форматирование текста в верхнем регистре для столбцов B и C, и у меня возникают проблемы с правильной установкой целей столбцов.

Я нашел этот фрагмент кода на справочном форуме Excel, но я знаю, что этот код устанавливает первые восемь столбцов в качестве цели. Итак, помогите мне исправить это так, чтобы столбцы B и C могли быть установлены в качестве цели.

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)  
    If Target.Column > 8 Then Exit Sub  
    On Error GoTo ErrHandler  
    Application.EnableEvents = False  
    Target.Formula = UCase(Target.Formula)  
    ErrHandler:  
    Application.EnableEvents = True  
    End Sub  

2 ответа2

1

Итак, помогите мне исправить это так, чтобы столбцы B и C могли быть установлены в качестве цели.

Самое простое решение - сделать следующее:

  • Добавьте новую 2-ю строку:

    If Target.Column = 1 Then Exit Sub
    
  • Изменить 8 на 3:

    If Target.Column > 3 Then Exit Sub 
    

Итак, ваш код теперь выглядит следующим образом:

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
If Target.Column = 1 Then Exit Sub   
If Target.Column > 3 Then Exit Sub  
On Error GoTo ErrHandler  
Application.EnableEvents = False  
Target.Formula = UCase(Target.Formula)  
ErrHandler:  
Application.EnableEvents = True  
End Sub  
0

Код использует подход, чтобы исключить столбцы и выйти из подпрограммы, когда это не правильный столбец. Вы можете использовать другой подход для именования (включения) столбцов, которые вы хотите посмотреть следующим образом:

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
if not intersect(target,Range("B:C")) = nothing then
   ' run the code
end if
end sub

При таком подходе вы также можете просматривать несколько несмежных столбцов с одной строкой кода. Например, запустите код в столбцах B, F и Z

if not intersect(target,Range("B:B", "F:F", "Z:Z")) = nothing then

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .