vba - Access VBA 中的图表/图形
问题描述
如何使用 MS Access VBA 中的数据初始化图表?最终我在这里找到了一个建议,通过一些修改让智能感知感到高兴,并产生了这段代码:
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 的最佳参考资料是构建 VBA 应用程序,但都没有详细介绍 Charts 或 ChartObjects。
显然我想克服这种类型不匹配的错误。当最接近语言参考的东西对您需要的语言保持沉默时,如果有人可以就如何解决这个问题给我一些一般性建议,那就更好了。
解决方案
这是一种方法。首先,创建一个新表并添加一些数据:
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
推荐阅读
- php - 如何通过输入特定月份的数据来限制用户,其中 Yii2 中存在大于特定月份的记录
- llvm - 为什么将 8 对齐为 int?
- java - Spring bean后处理器:注入一个值
- javascript - 逐步聚焦 TextInput 反应原生
- sql - 使用公用表表达式删除查询(“WITH AS”子句)
- c# - Unity - 关于 AnimationMode 和 GetCurveBindings 的错误 CS0117
- c# - 使用 C# 设置默认的全局打印首选项
- xslt - XSLT 2.0 版日期问题
- javascript - 点击 td 函数时获取表的 ID
- python - 如何在没有循环或递归的情况下解决,令人费解?