Цикл в VBA MsgBox - PullRequest
       29

Цикл в VBA MsgBox

1 голос
/ 20 марта 2019

У меня есть некоторый внутренний код, который создает MsgBox в зависимости от содержимого редактируемого пользователем пользовательского листа («iButtons»). Приведенный ниже код работает нормально и довольно быстро, но я осознаю тот факт, что по мере роста листа «iButtons» мне потребуется со временем излишне управлять этим кодом.

Могу ли я легко записать это в цикл, который быстро сканирует лист iButtons для всех строк на листе, который имеет содержимое (до тех пор, пока не будет достигнута пустая строка)? Будет ли цикл достаточно быстрым, чтобы пассивно работать в фоновом режиме, или отклик всплывающего окна MsgBox будет слишком медленным, учитывая объем кода, который нужно будет запустить?

Public Sub iButtons(ByVal Target As Range)

'Pulls content from the iButtons sheet
     If (ActiveSheet.Name = Worksheets("iButtons").Range("A4")) And Not Intersect(Target, Target.Parent.Range(Worksheets("iButtons").Range("B4"))) Is Nothing Then
        MsgBox Worksheets("iButtons").Range("D4"), vbInformation, Worksheets("iButtons").Range("C4")
        ActiveSheet.Range("A1").Select
    End If

     If (ActiveSheet.Name = Worksheets("iButtons").Range("A5")) And Not Intersect(Target, Target.Parent.Range(Worksheets("iButtons").Range("B5"))) Is Nothing Then
        MsgBox Worksheets("iButtons").Range("D5"), vbInformation, Worksheets("iButtons").Range("C5")
        ActiveSheet.Range("A1").Select
    End If

     If (ActiveSheet.Name = Worksheets("iButtons").Range("A6")) And Not Intersect(Target, Target.Parent.Range(Worksheets("iButtons").Range("B6"))) Is Nothing Then
        MsgBox Worksheets("iButtons").Range("D6"), vbInformation, Worksheets("iButtons").Range("C6")
        ActiveSheet.Range("A1").Select
    End If

End Sub

Спасибо!

1 Ответ

0 голосов
/ 20 марта 2019

Программный подход может быть (извините, мой VB сегодня немного заржавел, поэтому только общее описание):

Создайте глобальный массив информации о каждой кнопке и инициализируйте массив с информацией о каждой кнопке (информация кажется стандартной, поэтому вы можете использовать массив, определенный пользователем Type).

Для каждой кнопки, которая добавляется или удаляется с листа, обновляется только этот массив.

Есть процедура для обработки всех кнопок. Он имеет цикл, который проходит от первой записи массива (кнопки) до последней кнопки в массиве и выполняет общую обработку.

...