用access调整双轴图坐标及Excel中方法对比-云中老鼠
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> 源码示例


用access调整双轴图坐标及Excel中方法对比

发表时间:2011/4/7 15:06:49 评论(0) 浏览(9308)  评论 | 加入收藏 | 复制
   
摘 要:由于经常要画双轴图,常常碰到左轴有负数,右轴没有负数,希望将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群(群号:198465573)
 
 相关文章
Excel中将汉字转化为拼音(实例)  【杏林求真  2013/4/25】
Excel实现图表的数据钻取功能  【叶海峰  2013/5/3】
【Access拓展应用】VBA导出到Excel提速之法  【nivenm  2013/5/14】
Excel表中数据追加到Access表  【李制樯  2013/5/30】
EXCEL单元格填充后自动添加时间批注代码  【(麥田)转载  2013/6/13】
常见问答
技术分类
相关资源
文章搜索
关于作者

云中老鼠

文章分类

文章存档

友情链接