在Visio Professional 2016中,我试图将一个字符串变量(这是ComboBox中的一个字段)分配给Shape Data中新创建的行的标签。
该代码首先检查该字段是否已经存在,如果是这种情况,则显示一个消息框。如果没有,代码将在Shape Data中创建一个新行。可以在此行中看到添加名称的效果。
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
答案 0 :(得分:0)
Visio形状表公式的格式可能很棘手。在这种情况下,您需要将dataType
变量括在单引号中,以便将该值存储为标签,并防止子功能悄然失败。
尝试将相关行更改为此:
vsoShape.CellsSRC(visSectionProp, intNewPropRow, visCustPropsLabel).FormulaU = """" & dataType & """"