网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月21日漏签0天
excel吧 关注:281,506贴子:1,552,145
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1回复贴,共1页
<<返回excel吧
>0< 加载中...

用selection_change事件做图表的vba问题

  • 只看楼主
  • 收藏

  • 回复
  • sunad86
  • 博采众E
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

如图,本人用的是excel2007版的,想用selection_change事件的vba来实现如下功能:
(1)选中A列"型号"下的对应型号后,会先删除表格中存在的图表(如果有的话),然后出现该型号的图表,如在本图中选中的是型号“B”,那么就会把之前出现过的图表删除(假设之前有个A的图表),然后再出现对应的B型号的情况图表;
(2)选中A列中上一行有型号名称的空格后,会把表格中所有的图表删除。
问题是,我自制了一段代码,基本上是可以实现以上的功能,但是美中不足的是,这个代码在生成图表的时候,总是会生成两个图表(一模一样的),虽然总体来说无大碍,但是心里不舒服,想精益求精,特来请教各位高手,看这是什么问题。
我所用的代码如下:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
i = Range("a65536").End(xlUp).Row
If Target.Column = 1 Then
If Target.Row < i + 2 Then
If Target.Row Mod 2 = 0 Then
If ActiveSheet.ChartObjects.Count > 0 Then
ActiveSheet.ChartObjects.Delete
End If Range(Cells(Target.Row, Target.Column), Cells(Target.Row + 1, Target.Column + 10)).Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range(Cells(Target.Row, Target.Column), Cells(Target.Row + 1, Target.Column + 10))
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SeriesCollection(1).XValues = "=图表!$C$1:$K$1" '这里可以修改相应的"sheet"(我这里的是“图表”)
ActiveChart.SeriesCollection(1).Smooth = True
ActiveChart.SeriesCollection(2).AxisGroup = 2
ActiveChart.SeriesCollection(2).Smooth = True
ActiveChart.Axes(xlValue, xlSecondary).Select
Selection.TickLabels.NumberFormatLocal = "0%"
Target.Offset(0, 1).Select
Else
If ActiveSheet.ChartObjects.Count > 0 Then
ActiveSheet.ChartObjects.Delete
End If
End If
End If
End If End Sub


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1回复贴,共1页
<<返回excel吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示