ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3453|回复: 9

[求助]如何在输入数字后l两条曲线自动发生对应的不同变化?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-2-18 14:56 | 显示全部楼层 |阅读模式

27uEOrVD.zip (51.39 KB, 下载次数: 19)


[此贴子已经被作者于2007-2-19 13:18:05编辑过]

xTR8HSMA.rar

31.73 KB, 下载次数: 20

[求助]如何在输入数字后l两条曲线自动发生对应的不同变化?

TA的精华主题

TA的得分主题

发表于 2007-2-18 16:54 | 显示全部楼层

把代码放在Sheet1的Worksheet_Change事件里面

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Err_Handler
If Target.Count = 1 And Target.Column = 2 And Target.Offset(-1, 0) <> "" Then
Dim rng As Range

Set rng = Shapes(Shapes.Count).TopLeftCell
    If Target.Address = Cells(rng.Row + 1, 2).Address Then
        Dim BeginX, Beginy, EndX, EndY
        Select Case Target.Offset(-1, 0)
            Case 7, 8, 9 '曲线往左下走一格
                BeginX = Shapes(Shapes.Count).Left
            Case 3, 4, 5, 6 '曲线往垂直下方走一格
                BeginX = Shapes(Shapes.Count).Left
            Case 0, 1, 2 '曲线往右下走一格
                BeginX = Shapes(Shapes.Count).Left + rng.Width
        End Select
        Select Case Target
            Case 7, 8, 9 '曲线往左下走一
                EndX = rng.Offset(0, -1).Left
            Case 3, 4, 5, 6 '曲线往垂直下方走一格
                EndX = rng.Left
            Case 0, 1, 2 '曲线往右下走一格
                EndX = rng.Offset(0, 1).Left
        End Select
                Beginy = Shapes(Shapes.Count).Top + rng.Height
                EndY = rng.Offset(2, 0).Top
                With Me.Shapes.AddLine(BeginX, Beginy, EndX, EndY).Line
                    .Weight = 1.5
                    .ForeColor.SchemeColor = 39
                End With
        End If
End If
Err_Handler:
    Exit Sub
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-2-18 17:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

多谢楼上回答,可是我运行了一下,发现生成的曲线仍有错误,方向不对.

TA的精华主题

TA的得分主题

发表于 2007-2-18 17:30 | 显示全部楼层

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Err_Handler
If Target.Count = 1 And Target.Column = 2 And Target.Offset(-1, 0) <> "" Then
Dim rng As Range

Set rng = Shapes(Shapes.Count).TopLeftCell

    If Target.Address = Cells(rng.Row + 1, 2).Address Then

        Dim BeginX, Beginy, EndX, EndY
        Select Case Target.Offset(-1, 0)
            Case 7, 8, 9 '曲线往左下走一格
                BeginX = Shapes(Shapes.Count).Left
            Case 3, 4, 5, 6 '曲线往垂直下方走一格
                BeginX = Shapes(Shapes.Count).Left
            Case 0, 1, 2 '曲线往右下走一格
                BeginX = Shapes(Shapes.Count).Left + rng.Width
        End Select
        Select Case Target
            Case 7, 8, 9 '曲线往左下走一
                EndX = BeginX - rng.Width
            Case 3, 4, 5, 6 '曲线往垂直下方走一格
                EndX = BeginX
            Case 0, 1, 2 '曲线往右下走一格
                EndX = BeginX + rng.Width
            Case Else
                Exit Sub
        End Select
                Beginy = Shapes(Shapes.Count).Top + rng.Height
                EndY = Beginy + rng.Height
                With Me.Shapes.AddLine(BeginX, Beginy, EndX, EndY).Line
                    .Weight = 1.5
                    .ForeColor.SchemeColor = 39
                End With
        End If
End If
Err_Handler:
    Exit Sub
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-2-18 17:54 | 显示全部楼层

还是很感谢EDGE的热情帮助,现在还想再做一条曲线,设定1,5,7向右走,0,3,6,9向垂直下走,2,4,8向左走,这条曲线和原来的曲线并列在一张工作表内,方向完全不同.该如何设定CHAGE事件,使得两条曲线各自往自己的方向走?

问题多了点,大过年的能得到EDGE的帮助,还是很感激的!

[此贴子已经被作者于2007-2-19 13:19:21编辑过]

TA的精华主题

TA的得分主题

发表于 2007-2-18 19:57 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-2-19 13:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原来的问题已经解决,但现在我又新画了一条曲线,还是根据相同的数据,设定:当数字为1,5,7时,曲线往左下走一网格,当数字为0,3,6,9时,曲线往垂直下方走一格,当数字为2,4,8时,曲线往右下走一格.    颜色为:Selection.ShapeRange.Line.ForeColor.SchemeColor = 25。这条曲线和原来的颜色为39的曲线并列在一张表上。该如何重新设定CHANGE事件,使两条曲线沿着它们各自的轨迹进行运动而不产生冲突?多谢了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-2-20 17:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

没人回答吗?真希望有人能帮忙

TA的精华主题

TA的得分主题

发表于 2007-2-21 21:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

建议你每条直线的名称改成与期数相关的.这样利于以后的定位.

如:

A直线:2006001A1,2006001A2...

B直线:2006001B1,2006001B2...

你现在只有第一条线,用个循环的方法把原来已加的线段改名

以后再增加的线段就按命名规则递增.

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-2-21 21:46 | 显示全部楼层

果真是好方法,多谢EDGE,我也摸索出了一段代码,就在你写的代码的基础上,很笨很耗时间的一个做法,但是可以完成两条曲线一起变化,先将就着用用啦!

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

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-1 19:34 , Processed in 0.045615 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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