Контроль доступа кадра, переданного по ссылке в подпункте

Я пытаюсь передать многие MSForms.Frames пользовательской формы в подпункт, который должен делать материал с текстовыми полями, которые они содержат:

initFrame(frame1) 

Однако, когда-то прошло, я больше не могу получить доступ к свойству .Controls этого фрейма (добавлен чат во время отладки, все, что осталось, это Items).

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

 Private Sub initFrame(ByRef currFrame As MSForms.Frame) Private Sub initFrame(ByRef currFrame As MSForms.Object) Private Sub initFrame(ByRef currFrame As Frame) Private Sub initFrame(ByRef currFrame As Object) 

Во всех случаях я получаю ошибку времени выполнения, когда она

 For Each ctl In currFrame.Controls 

Должен ли я делать что-то особенное для доступа к элементам управления? Как кастинг?

Вот весь код (игнорируйте назначения .Name):

 Private Sub initTabs() initFrame (frPrDetails) initFrame (frPcDetails) initFrame (frScDetails) End Sub Private Sub initFrame(ByRef currFrame As Frame) Dim ctl As Control With currFrame For Each ctl In .Controls If TypeName(ctl) = "TextBox" Then If ctl.TabIndex <> 57 Then Select Case (ctl.TabIndex) Mod 7 Case 1 'ctl.Name = "tb" & ctl.tag & "MP" Case 2 'ctl.Name = "tb" & ctl.tag & "HW" Case 3 'ctl.Name = "tb" & ctl.tag & "SW" Case 4 'ctl.Name = "tb" & ctl.tag & "IC" Case 5 'ctl.Name = "tb" & ctl.tag & "ES" Case 6 'ctl.Name = "tb" & ctl.tag & "CONT" Case 0 'ctl.Name = "tb" & ctl.tag & "ST" End Select Else 'ctl.Name = "tbPrTotal" End If ctl.Text = ctl.Name End If Next ctl End With End Sub 

Причина проста, но очень тонкая.

Прежде всего, по умолчанию параметры передаются по ссылке, поэтому:

 Private Sub initFrame(currFrame As MSForms.Frame) ' ByRef is optional 

Но, если параметр является выражением, создается новый объект / переменная.
Так что верьте или нет, (frame1) и frame1 – это не одно и то же.

Вернемся к вопросу, когда вы вызываете функцию, либо используйте:

 Call initFrame(frPrDetails) ' note the lack of space before the opening bracket 

или просто

 initFrame frPrDetails 

но не initFrame (frScDetails) что эквивалентно Call initFrame((frPrDetails))

  • C # EPPlus OpenOfficeXml Форматирование ячеек
  • Excel VBA - Обработка ошибок vformup Userform
  • Пользовательский формат PHPExcel для ячейки
  • Как выделить каждый экземпляр слова в одной ячейке для заданного диапазона или выбора в Excel 2010?
  • Получить правильный FormatCode для numFmtID в Excel
  • Проверка для Userform для проверки пустых элементов управления с использованием циклов
  • Ошибка выполнения 13 - Несоответствие
  • Пользовательские формы VBA снова и снова показывают одну и ту же пользовательскую форму
  • Excel VBA: создание пользовательской формы с динамическими comboboxes, содержание которой изменяется в зависимости от данных родительского combobox
  • Вставить комментарий на основе существующих данных
  • Преобразование строки в дату в ячейке
  • Interesting Posts

    Загрузка файла Excel в классическом ASP В Windows 2003 x64 Использование драйверов Office 2010

    Excel Macro: Как получить метку времени в формате «yyyy-MM-dd hh: mm: ss»?

    Как взять название веб-сайта и добавить его в электронную таблицу Excel с помощью AppleScript + Excel

    Найти и объединить символы, которые появляются более одного раза

    Как вводить данные в определенные ячейки на листе Excel с использованием формы VBA?

    Изменение содержания формулы на основе значения ComboBox

    Как объединить несколько файлов Excel в одну книгу Excel с несколькими листами?

    Ссылка на рабочую книгу через именованный диапазон в Excel

    Объединение ячеек в столбце по парам

    Прогнозировать количество сотрудников на предстоящие месяцы

    Excel 2007 – VBA Вырезать значение пасты из одной ячейки в другую ниже друг друга

    Создание Duplicate Excel Row на основе значений в другой ячейке файла Excel

    где моя кривая проходит определенный порог

    Сохранение диаграммы как .jpeg-файла

    запись данных, хранящихся в массиве, на несколько листов excel с использованием PHP

    Давайте будем гением компьютера.