Делать содержимое ячеек заглавными при изменении значения - PullRequest
0 голосов
/ 05 марта 2020

У меня нет опыта работы с VBA, и я собрал небольшой скрипт, чтобы сделать содержимое заглавной буквы ячейки после ввода любого значения. Сценарий должен применять это только к определенному диапазону ячеек, в моем случае J11: AK25.

Сценарий работает (он делает содержимое верхнего регистра ячейки, когда что-то вводится или изменяется), но Excel вылетает правильно после ввода или изменения значения. Это происходит в Excel 2013.

Код, который у меня сейчас есть:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("J11:AK24")) Is Nothing Then RunUp
End Sub


Sub RunUp()
 Range("J11:AK25") = [index(upper(J11:AK25),)]
End Sub

Кто-нибудь может помочь?

1 Ответ

1 голос
/ 05 марта 2020

отключите события перед вызовом другого сабвуфера:

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Goto SafeOut
    Application.EnableEvents = False
    If Not Intersect(Target, Me.Range("J11:AK24")) Is Nothing Then RunUp

SafeOut:
    Application.EnableEvents = True
End Sub

При этом может быть безопаснее:

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo SafeOut
    Application.EnableEvents = False

    Dim rng As Range
    Set rng = Intersect(Target, Me.Range("J11:AK24"))
    If Not rng Is Nothing Then
        Dim cel As Range
        For Each cel In rng
            cel.Value = UCase$(cel.Value)
        Next cel
    End If

SafeOut:
    Application.EnableEvents = True
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...