关于excel vba的问题

我想做一个宏,假设鼠标选取了x行数据,就可以自动把表格中第一列的x行数据和鼠标选中区域选中并且生成一个折线图现在有以下代码,可以但是只能实现整列选中,不能实现任意区域选中... 我想做一个宏,假设鼠标选取了x行数据,就可以自动把表格中第一列的x行数据和鼠标选中区域 选中 并且生成一个折线图

现在有以下代码,可以但是只能实现整列选中,不能实现任意区域选中
Sub inp()
Dim r, t As Range
Set t = [$A:$A]
Set r = ActiveSheet.Range(Selection.Address)
Union(t, r).Select
If ActiveSheet.ChartObjects.Count > 0 Then
ActiveSheet.ChartObjects.Delete
ActiveSheet.Shapes.AddChart2(227, xlLine).Select
ActiveChart.SetSourceData Source:=Union(t, r)
Else: ActiveSheet.Shapes.AddChart2(227, xlLine).Select
ActiveChart.SetSourceData Source:=Union(t, r)
End If

End Sub

求大神帮忙
展开
 我来答
mzz9060
2017-08-17 · TA获得超过1321个赞
知道小有建树答主
回答量:773
采纳率:84%
帮助的人:194万
展开全部

答:抱歉,我开始误解了你的意思,现在更改了代码,它的功能是获取选取区域与A列组合的区域,同样适合选择区域本身包含A列的情况。

Sub GetRng()
    Dim r As Range
    Dim t As Range
    Dim ComRng As Range '最终取得的区域
    
    If Not Intersect(Selection, Range("A:A")) Is Nothing Then
        Set ComRng = Selection
    Else
        Set ComRng = Union(Range("A" & Selection.Row).Resize(Selection.Rows.Count, 1), Selection)
    End If
End Sub

往下部分,你可以 Union(t, r) 替换为 ComRng。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cnbubble
2017-08-17 · TA获得超过2607个赞
知道大有可为答主
回答量:1990
采纳率:83%
帮助的人:766万
展开全部

因为你的t=[$A:$A]选择的是整列数据,

Union之前的代码更改为:

Sub inp()
Dim r, t As Range
Set r = ActiveSheet.Range(Selection.Address)
Set t = Range("A" & r.Row & ":A" & r.Row + r.Rows.Count - 1)
Union(t, r).Select
'…………
end sub

这样T就变成了A列对应的行。

后面的做图部分代码没试


另外程序应该前面加个判断,是否选中了多行区域,选中的区域是否是A列……

追问
哇果然是大神啊,我确实需要个判断选中区域是否是A列。。。但两个条件分歧套一起我有点蒙圈了。。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式