#НАЗВАНИЕ?Ошибка при назначении переменной в поле Label of Shape Data - PullRequest
1 голос
/ 18 апреля 2019

В Visio Professional 2016 я пытаюсь назначить строковую переменную, которая является полем из ComboBox, для метки вновь созданной строки в данных формы.

Код сначала проверяет, существует ли поле, и отображает окно сообщения, если это так.Если нет, код создаст новую строку в данных формы.Добавление имени работает нормально, как видно из этой строки.

vsoShape.Section(visSectionProp).Row(intNewPropRow).NameU = dataType

Однако, когда я пытаюсь добавить метку, я получаю #NAME?ошибка.

vsoShape.CellsSRC(visSectionProp, intNewPropRow, visCustPropsLabel).FormulaU = dataType

Входная переменная dataType представляет собой обычную строку.Я включил полную функцию ниже.Что я делаю не так?

Sub AddDataToSelectedShape(dataType As String)

Dim vsoShape As Visio.Shape

Set vsoShape = Application.ActiveWindow.Selection.PrimaryItem
    If (vsoShape.CellExistsU("Prop.dataType", fExistsLocally) = True) Then
        MsgBox ("The field is added already.")
        Exit Sub
    End If

    If (vsoShape.CellExistsU("Prop.dataType", fExistsLocally) = False) Then
        intNewPropRow = vsoShape.AddRow(visSectionProp, visRowLast, visTagDefault)
        vsoShape.Section(visSectionProp).Row(intNewPropRow).NameU = dataType
        vsoShape.CellsSRC(visSectionProp, intNewPropRow, visCustPropsLabel).FormulaU = dataType
        vsoShape.CellsSRC(visSectionProp, intNewPropRow, visCustPropsType).FormulaU = "0"
        vsoShape.CellsSRC(visSectionProp, intNewPropRow, visCustPropsFormat).FormulaU = ""
        vsoShape.CellsSRC(visSectionProp, intNewPropRow, visCustPropsLangID).FormulaU = "1033"
        vsoShape.CellsSRC(visSectionProp, intNewPropRow, visCustPropsCalendar).FormulaU = ""
        vsoShape.CellsSRC(visSectionProp, intNewPropRow, visCustPropsPrompt).FormulaU = ""
        vsoShape.CellsSRC(visSectionProp, intNewPropRow, visCustPropsValue).FormulaU = ""
        vsoShape.CellsSRC(visSectionProp, intNewPropRow, visCustPropsSortKey).FormulaU = ""
        Application.EndUndoScope UndoScopeID1, True
    End If
End Sub

1 Ответ

0 голосов
/ 22 апреля 2019

Форматирование формул Visio может быть сложным.В этом случае вам нужно обернуть переменную dataType в одинарные кавычки, чтобы сохранить это значение в качестве метки и не допустить тихого сбоя вашей подфункции.

Попробуйте изменить строку, о которой идет речь, следующим образом:

vsoShape.CellsSRC(visSectionProp, intNewPropRow, visCustPropsLabel).FormulaU = """" & dataType & """"
...