VBA Как программно установить имя объекта? - PullRequest
0 голосов
/ 29 октября 2018

В FactoryTalk View SE я пытаюсь установить имя объекта в VBA на основе другого значения.

Это работает:

Dim PumpSP As Object

Set PumpSP = ThisDisplay.PumpSetpoint1

PumpSP.Vaule = 10

Это не работает:

Dim PumpSP As Object

Set PumpSP = "ThisDisplay.PumpSetpoint" & "1"

PumpSP.Vaule = 10

Как мне получить объединенную строку?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Это трудная часть, так как мы заплатили поддержку Rockwell, но они не помогут с любыми вопросами VBA. Хорошо, хорошо, но команды и класс VBA не похожи на 90% VBA в Excel или MS Office, которые вы можете найти в Интернете. В любом случае мне удалось найти правильного ученика.

Так что эта работа для меня: Set PumpSP = ThisDisplay.FindElement("PumpSetpoint" & “1”) Спасибо за помощь.

0 голосов
/ 29 октября 2018

Как мне получить объединенную строку?

Ты не можешь и не можешь. PumpSP - это Object, а не String. Единственное, что вы можете Set, это ссылка на объект.

Это очень похоже, скажем, на то, как вы будете обращаться к элементам управления на UserForm:

Set box = Me.TextBox1

Причина, по которой вы можете получить этот объект со строкой, заключается в том, что форма имеет коллекцию Controls, которая позволяет вам предоставить строку, определяет, какой элемент управления имеет это имя, и возвращает для нее объект Control:

Set box = Me.Controls("TextBox" & i)

Итак, в вашем случае, чтобы перейти от этого:

Set PumpSP = ThisDisplay.PumpSetpoint1

Я не знаю, что такое ThisDisplay, но, возможно, у него есть подобная коллекция:

Set PumpSP = ThisDisplay.Controls("PimpSetpoint" & i)

Если нет коллекции, которая позволяла бы вам извлекать элементы по имени со строковым литералом, вам не повезло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...