Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 6226|回复: 22

[已解决]VBA 如何自动识别单元格数量,并递增执行此命令?

[复制链接]
发表于 2016-1-21 13:47 | 显示全部楼层 |阅读模式
Private Sub worksheet_change(ByVal target As Range)


    ActiveSheet.ChartObjects("图表 4").Activate
    ActiveChart.SeriesCollection(2).Points(1).DataLabel.Select
    Selection.Characters.Text = [e15]
    ActiveSheet.ChartObjects("图表 4").Activate
    ActiveChart.SeriesCollection(2).Points(2).DataLabel.Select
    Selection.Characters.Text = [f15]
    ActiveSheet.ChartObjects("图表 4").Activate
    ActiveChart.SeriesCollection(2).Points(3).DataLabel.Select
    Selection.Characters.Text = [g15]
End Sub
如上所示,我想让表格collection(2).points(1)改成collection(2).points(x),其中x从1往上递增,同时[E15]也跟着递增,有简单指令吗?
还有,如果用for x =1 to n指令,这个n可否自动取非空单元格的数量?求大神指教,小弟不胜感激!
最佳答案
2016-1-21 19:13

(, 下载次数: 11)

水泥混凝土用粗集料试验检测报告记录1.rar

28.67 KB, 下载次数: 5

里面的“报告”表格是目标表格

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-1-21 13:57 | 显示全部楼层
1楼代码可改为循环

Private Sub worksheet_change(ByVal target As Range)
    Call test
End Sub

Sub test()
    With ActiveSheet.ChartObjects("图表 4").Chart.SeriesCollection(2)
        For i = 1 To 3
            .Points(i).DataLabel.Characters.Text = Cells(15, i + 4)
        Next i
    End With
End Sub


回复

使用道具 举报

 楼主| 发表于 2016-1-21 14:15 | 显示全部楼层
爱疯 发表于 2016-1-21 13:57
1楼代码可改为循环

Private Sub worksheet_change(ByVal target As Range)

万分感谢,果然厉害,我想再问一下,其中for i = 1 to 3 这个3是否可以换成一个统计数,自动统计15行第5列到14列的数字单元格数量,比如附件中的就有7个数,怎么写函数?
回复

使用道具 举报

发表于 2016-1-21 14:38 | 显示全部楼层
本帖最后由 爱疯 于 2016-1-21 14:41 编辑

Private Sub worksheet_change(ByVal target As Range)
    Call test
End Sub

Sub test()
    Dim i As Integer
    Dim rng As Range

    With ActiveSheet.ChartObjects("图表 4").Chart.SeriesCollection(2)
        For i = 1 To 10
            Set rng = Cells(15, i + 4)
            If VBA.IsNumeric(rng) Then .Points(i).DataLabel.Characters.Text = rng Else Exit For
        Next i
    End With
End Sub

评分

参与人数 1 +1 收起 理由
试验资料 + 1 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-1-21 14:51 | 显示全部楼层
爱疯 发表于 2016-1-21 14:38
Private Sub worksheet_change(ByVal target As Range)
    Call test
End Sub

谢谢,好像看明白了
回复

使用道具 举报

 楼主| 发表于 2016-1-21 15:12 | 显示全部楼层
爱疯 发表于 2016-1-21 14:38
Private Sub worksheet_change(ByVal target As Range)
    Call test
End Sub

还有件麻烦事
Private Sub worksheet_change(ByVal target As Range)
    ActiveSheet.ChartObjects("图表 4").Chart.Axes(xlCategory).MaximumScale = [i33]
    Call test
End Sub
Sub test()
    Dim i As Integer
    Dim rng As Range
    With ActiveSheet.ChartObjects("图表 4").Chart.SeriesCollection(2)
        For i = 1 To 10
            Set rng = Cells(15, i + 4)
            If VBA.IsNumeric(rng) Then .Points(i).DataLabel.Characters.Text = rng Else Exit For
        Next i
    End With
End Sub
我加了句 ActiveSheet.ChartObjects("图表 4").Chart.Axes(xlCategory).MaximumScale = [i33]
这个,如果附件里的第一个表格更改级配属性,为什么报告表不自动更换呢,如原来的是37.5,31.5...更改为53.37.5,31.5...第一个表改动,报告表的图表不自动更改啊
回复

使用道具 举报

 楼主| 发表于 2016-1-21 15:14 | 显示全部楼层
试验资料 发表于 2016-1-21 15:12
还有件麻烦事
Private Sub worksheet_change(ByVal target As Range)
    ActiveSheet.ChartObjects("图 ...

这是新的附件

水泥混凝土用粗集料试验检测报告记录1.rar

30.87 KB, 下载次数: 4

回复

使用道具 举报

发表于 2016-1-21 15:43 | 显示全部楼层
本帖最后由 爱疯 于 2016-1-21 16:39 编辑

Private Sub Worksheet_Activate()
    Call test
End Sub

Sub test()
    Dim i As Integer
    Dim rng As Range
    With ActiveSheet.ChartObjects("图表 4").Chart
        .Axes(xlCategory).MaximumScale = [i33]
        For i = 1 To 10
            Set rng = Cells(15, i + 4)
            If VBA.IsNumeric(rng) Then .SeriesCollection(2).Points(i).DataLabel.Characters.Text = rng Else Exit For
        Next i
    End With
End Sub
水泥混凝土用粗集料试验检测报告记录2.rar (30.27 KB, 下载次数: 11)
回复

使用道具 举报

 楼主| 发表于 2016-1-21 16:35 | 显示全部楼层
爱疯 发表于 2016-1-21 15:43
Private Sub Worksheet_Activate()
    Call test
End Sub

有时间的话,QQ教我下行吗?
~)KA6UTBU3)OLYYEHG5P756.png
回复

使用道具 举报

发表于 2016-1-21 16:41 | 显示全部楼层
sdfff23f3.gif


刚才附件发错,已加。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-8 20:40 , Processed in 0.831841 second(s), 17 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表