Procedure too large Как уменьшить данный код? - VBA

Узнай цену своей работы

Формулировка задачи:

Добрый день! Прошу помощи, как можно уменьшить код, можно использовать и подпроцедуры и все остальные прелести VBA. Сам пробую, не получается.
Вот таких дней получается 31, и в каждом по 9 условий (изменений по двойному клику в ячейке) и все они находятся в одной процедуре. Получается очень длинный код и вылазит ошибка "Procedure too large". Вот и вытекает вопрос - как можно уменьшить код? Большая просьба, если можно, написать код.

Решение задачи: «Procedure too large Как уменьшить данный код?»

textual
Листинг программы
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
ActiveSheet.Unprotect
Call DaysUniv(Target, "$Z$16:$Z$24", "AA17", Cancel)
Call DaysUniv(Target, "$M$16:$M$24", "N17", Cancel)
ActiveSheet.Protect
End Sub
Private Sub DaysUniv(ByVal Target As Range, ByVal strAddrRange As String, ByVal strAddrCell As String, ByRef Cancel As Boolean)
Dim rngObj As Range
If Intersect(Target, Range(strAddrRange)) Is Nothing Then Exit Sub Else Set rngObj = Intersect(Target, Range(strAddrRange))
    Cancel = True
        
        With Target.Font
        .Name = "Marlett"
        .Size = 11
        End With
            If Target = vbNullString Then
                Target = "a"
                rngObj.Offset(0, -4).Resize(1, 3).Interior.Color = 5287936
                Range(strAddrCell) = Range(strAddrCell).Value + rngObj.Offset(0, -1).Value
            Else
                Target = vbNullString
                rngObj.Offset(0, -4).Resize(1, 3).Interior.Pattern = xlNone
                Range(strAddrCell) = Range(strAddrCell).Value - rngObj.Offset(0, -1).Value
             
            End If
    
 
Set rngObj = Nothing
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.2 из 5
Похожие ответы