#姓名?将变量分配给形状数据字段的标签时出错
#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 & """"
在 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 & """"