代码之家  ›  专栏  ›  技术社区  ›  simplify

从WORD表格VBA获取公式值

  •  1
  • simplify  · 技术社区  · 6 年前

    我确实在WORD中定义了一个表,我需要在表的一个单元格中定义公式。

    我设置了如下公式:

    Selection.InsertFormula Formula:="=MAX(A1:B1)", NumberFormat:=""
    

    但当我想从表格中得到公式时 "Expected Function or Variable"

    这就是我想从Word的表格单元格中获取公式的方式:

    Dim formula As Variant
    formula = Selection.Cells("A1:C2").Formula
    

    但是用这个我无法得到所需的公式。

    这是我的完整代码:

    ActiveDocument.tables.Add Range:=Selection.Range, NumRows:=2, NumColumns:= _
        3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
        wdAutoFitFixed
    
    Selection.TypeText Text:="12"
    Selection.InsertFormula Formula:="=MAX(A1:B1)", NumberFormat:=""
    
    MsgBox Selection.Cells("C1").Formula, vbOKOnly
    

    我创建了一个2x3表格,在第一列和第二列中插入了2个数字(“A1”=1,“B1”=2),在第三列(C1)中插入了相应的公式。

    当我尝试从现有表中打印公式时,它会为我提供 “预期函数或变量” 错误

    1 回复  |  直到 6 年前
        1
  •  3
  •   xidgel    6 年前

    可能是这样 Formula 仅写。我无法在文件中明确地找到这一点,尽管文件确实这么说 公式 创建 Field

    也许这将实现您的目标:

    Sub test()
        Dim t As Word.Table
        Set t = ThisDocument.Tables.Add(Range:=Selection.Range, NumRows:=2, NumColumns:= _
            3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
            wdAutoFitFixed)
    
        t.Cell(1, 1).Range.Text = "15"
        t.Cell(1, 2).Range.Text = "20"
        t.Cell(1, 3).Formula Formula:="=MAX(A1:B1)", NumFormat:=""
    
        MsgBox t.Cell(1, 3).Range.Fields(1), vbOKOnly
        Set t = Nothing
    End Sub
    

    注意:以上检索公式。如果要检索公式的结果,请使用 Cell(1,3).Range.Text

    希望这有帮助。