Макросы VBA Excel — Страница 26

Надстройка для работы с ячейками и листами


Клавиша:

Установка значения в выпадающем списке на веб-странице

Функция предназначена для работы с объектной моделью web-документа (DOM) средствами VB (VBA)

Иногда, при программном заполнении (макросом) полей на веб-странице, требуется внести некоторое значение в выпадающий список, в который позволяется заносить только заранее определённые значения.
Поскольку в качестве исходных данных может выступать любой текст, - требуется отлавливать возникающие ошибки, и выводить пояснения (какая ошибка при заполнении какого списка произошла)

Function SetSelectElementValue(ByRef IEdoc As Object, _
                               ByVal SelectElementName$, ByVal NewValue$) As Boolean
    ' функция ищет в документе IEdoc (типа HTMLDocument) выпадающий список с именем SelectElementName$,
    ' и пытается установить его значение в NewValue$
    ' в случае ошибки выводит сообщение о невозможности установки нового значения
    ' Возвращает результат операции (TRUE, если всё прошло успешно)

Объединение двумерных массивов

Функция CombineArrays объединяет 2 двумерных массива ОДИНАКОВОЙ ШИРИНЫ в один массив

(второй массив "дописывается" ниже первого, путем добавления строк из второго массива в первый)

Функция возвращает массив той же ширины, что и исходные, а вертикальная размерность возвращаемого массива равна сумме количества строк исходных массивов.

 

В случае, если один из массивов не задан, функция возвращает другой заданный массив (без изменений)

ВНИМАНИЕ: все размерности массивов 1 и 2 должны совпадать (кроме первой размерности - по высоте)

Подразумевается, что индексы массивов начинаются с 1 (директива Option Base 1)

Sub ПримерОбъединенияМассивов()
    Arr1 = [a5:c10].Value    ' массив размерами 6 * 3
    Arr2 = [a24:c26].Value    ' массив размерами 3 * 3
    Arr3 = [a55:c62].Value    ' массив размерами 8 * 3

    ОбъединённыйМассив12 = CombineArrays(Arr1, Arr2)
    Debug.Print "Количество строк после объединения массивов 1 и 2:   " & _
                UBound(ОбъединённыйМассив12) ' результат: 9 (6+3)

 
    ОбъединённыйМассив123 = CombineArrays(Arr1, CombineArrays(Arr2, Arr3))
    Debug.Print "Количество строк после объединения массивов 1, 2 и 3:   " & _
                UBound(ОбъединённыйМассив123) ' результат: 17 (6+3+8)

End Sub

Замена гиперссылок с формулой =ГИПЕРССЫЛКА() на обычные

Иногда требуется заменить на листе все гиперссылки, созданные при помощи функции листа =ГИПЕРССЫЛКА(), на обычные гиперссылки.

В этом поможет VBA-функция FormulaHyperlink, и основанный на ней макрос:

Function FormulaHyperlink(ByRef cell As Range) As String
    If cell.HasFormula And (cell.Hyperlinks.Count = 0) Then
        If cell.Formula Like "=HYPERLINK*" Then
            FormulaHyperlink = Evaluate(Mid$(Split(cell.Formula, ",")(0), 12))
        End If
    End If
End Function

Ключи лицензии для элементов управления OCX и ActiveX

Если при запуске вашей программы появляется сообщение об ошибке
The control could not be created because it is not properly licensed