Access VBA中的图表/图形

时间:2018-09-18 23:04:38

标签: vba ms-access charts

如何使用MS Access VBA中的数据初始化图表?最终,我发现了一个建议here,并对其进行了一些修改,使他们对智能感觉很满意,并产生了以下代码:

Dim objchart As Chart

Dim arrData(3, 1) As Double

arrData(0, 0) = 1
arrData(1, 0) = 1
arrData(2, 0) = 1
arrData(3, 0) = 1

arrData(0, 1) = 1
arrData(1, 1) = 1
arrData(2, 1) = 1
arrData(3, 1) = 1

Set objchart = Me.Chart1

With objchart
    .ChartTitle = "test"
    .ChartType = acChartLine
    .ChartValues = arrData
End With

但这会引发

  

编译错误:类型不匹配

在线

    .ChartValues = arrData

我已经尝试过将其作为“行优先”(arrData(1,3)),并且也只是传入单个数组(arrData(3))。这些都导致相同的类型不匹配错误。尽管智能告诉我Chart1存在,并且.ChartValues是有效字段,但它没有告诉我期望的对象类型。我已经对此进行了广泛的搜索,结果空白了。我可以为Access VBA找到的最佳参考是Building VBA Appsthis,但是在Charts或ChartObjects上都没有详细介绍。

很显然,我想克服这种类型的不匹配错误。最好的办法是,如果某个语言reference中最接近的内容在您需要的语言中保持沉默,那么有人可以给我一些一般性建议,以解决该问题。

1 个答案:

答案 0 :(得分:0)

这是一种实现方法。首先,创建一个新表并添加一些数据:

Private Sub Form_Load()

  Dim db As DAO.Database
  Dim rec As Recordset
  Dim tbl As DAO.TableDef

  Set db = CurrentDb
  Set tbl = db.CreateTableDef("tbl")

  With tbl
    .Fields.Append .CreateField("first", dbInteger)
    .Fields.Append .CreateField("second", dbInteger)
  End With

  db.TableDefs.Append tbl
  db.TableDefs.Refresh

  Set rec = db.OpenRecordset("tbl")

  rec.AddNew
  rec("first").Value = 0
  rec("second").Value = 2
  rec.Update

  rec.AddNew
  rec("first").Value = 1
  rec("second").Value = 2
  rec.Update

  rec.AddNew
  rec("first").Value = 2
  rec("second").Value = 2
  rec.Update

  rec.AddNew
  rec("first").Value = 3
  rec("second").Value = 2
  rec.Update

  Set rec = Nothing
  Set db = Nothing

End Sub

第二,通过引用新表来绘制数据图形:

Private Sub command0_click()

  Dim objchart As Chart
  Set objchart = Me.Chart1

  With objchart
    .ChartTitle = "tbl: second ~ first"
    .RowSource = "tbl"
    .ChartAxis = "first"
    .ChartValues = "second"
  End With

End Sub