用access调整双轴图坐标及Excel中方法对比
时 间:2011-04-07 15:06:49
作 者:云中老鼠 ID:17697 城市:广州
摘 要:由于经常要画双轴图,常常碰到左轴有负数,右轴没有负数,希望将0轴坐标对齐。当然,一个图的话手工改就可以了,如果每个月都要画上百个呢?所以想到用vba自动调整,查了网上资料,很少这方面的专题文章。经摸索,初步写了一些代码,可能还有进一步优化的空间,权当抛砖引玉。以下用excel控制双轴图、用access控制双轴图、用access打开excel并控制其双轴图三种方法进行列举比较,与大家分享。
正 文:
用Access调整双轴图坐标及Excel中方法对比
由于经常要画双轴图,常常碰到左轴有负数,右轴没有负数,希望将0轴坐标对齐。当然,一个图的话手工改就可以了,如果每个月都要画上百个呢?所以想到用vba自动调整,查了网上资料,很少这方面的专题文章。经摸索,初步写了一些代码,可能还有进一步优化的空间,权当抛砖引玉。以下用excel控制双轴图、用access控制双轴图、用access打开excel并控制其双轴图三种方法进行列举比较,与大家分享。
一:用excel调整双轴图
Private Sub CommandButton2_Click()
ChartObjects("图表 1").Activate
With ActiveChart.Axes(xlValue)
ccc = .MajorUnit '左轴间距
aaa = .MaximumScale '左轴最大值
bbb = .MinimumScale '左轴最小值
End With
With ActiveChart.Axes(xlValue, xlSecondary)
.MinimumScaleIsAuto = True
.MaximumScaleIsAuto = True
.MajorUnitIsAuto = True
aa2 = .MaximumScale '右轴最大值
Call mm(aaa, bbb, ccc, aa2, aa3, aa4) 'aa左大 bb左小 cc左距 aa2右大 aa3右小 aa4右间距
.MinimumScale = aa3
.MaximumScale = aa2
.MajorUnit = aa4
End With
End Sub
Sub mm(aa, bb, cc, dd, ee, aa4) 'aa左大 bb左小 cc左距 dd右大 ee右小 aa4右间距
If bb > 0 Then bb = 0
ff = dd * 10 Mod (aa / cc)
If ff = 0 Then ff = aa / cc
dd = dd + ff / 10
If dd > (2 * aa / cc) Then
aa4 = Round(dd / (aa / cc), 0)
Else
aa4 = Round(dd / (aa / cc), 1)
End If
dd = aa4 * (aa / cc)
ee = dd * bb / aa
End Sub
二:用access调整双轴图
Private Sub Command3_Click()
With Me![Graph1].axes(2, 2)
.MinimumScaleIsAuto = True
.MaximumScaleIsAuto = True
.majorunitisauto = True
End With
With Me![Graph1].axes(2)
cc = .majorunit
aa = .maximumscale
bb = .minimumscale
End With
With Me![Graph1].axes(2, 2)
aa2 = .maximumscale
Call mm(aa, bb, cc, aa2, aa3, aa4)
.minimumscale = aa3
.maximumscale = aa2
.majorunit = aa4
End With
End Sub
Sub mm(aa, bb, cc, dd, ee, aa4) 'aa左大 bb左小 cc左距 dd右大 ee右小 aa4右间距
‘与excel的子程序一样,这里就不重复了
End Sub
三:用access调整excel双轴图
Private Sub Command7_Click()
Dim xlApp As Object
Dim xlBook As Object
Set xlApp = CreateObject("Excel.Application") '打开文件
xlApp.Application.Visible = True
Set xlBook = xlApp.Workbooks.Open(CurrentProject.Path & "\双轴图.xls")
xlBook.Application.Sheets(1).Select
With xlBook.Application.Sheets(1).Chartobjects("图表 1").chart
.axes(2, 2).MinimumScaleIsAuto = True
.axes(2, 2).MaximumScaleIsAuto = True
.axes(2, 2).majorunitisauto = True
ccc = .axes(2).majorunit '左轴间距
aaa = .axes(2).maximumscale '左轴最大值
bbb = .axes(2).minimumscale '左轴最小值
aa2 = .axes(2, 2).maximumscale '右轴最大值
Call mm(aaa, bbb, ccc, aa2, aa3, aa4) 'aa左大 bb左小 cc左距 aa2右大 aa3右小 aa4右间距
.axes(2, 2).minimumscale = aa3
.axes(2, 2).maximumscale = aa2
.axes(2, 2).majorunit = aa4
End With
xlBook.Save
Set xlApp = Nothing
Set xlBook = Nothing
End Sub
Sub mm(aa, bb, cc, dd, ee, aa4) 'aa左大 bb左小 cc左距 dd右大 ee右小 aa4右间距
‘与excel的子程序一样,这里就不重复了
End Sub
结论:思路是一样的,只要看sub mm()就知道了,只是各自的语法有点差别。
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台--使用组...(11.25)
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)