#姓名?将变量分配给形状数据字段的标签时出错

#NAME? Error when assigning a variable to Label of Shape Data field

在 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

Visio shapesheet 公式格式设置可能很棘手。在这种情况下,您需要将 dataType 变量用单引号括起来,以便将该值存储为标签并防止您的子函数悄悄失败。

尝试将有问题的行更改为:

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