Logo

Math Mindflow

数学思绪
Published on

Excel 中根据选中的单元格画箭头

本文字数:约0.3k·访问:加载中...
Authors
  • avatar
    Name
    Jing
    Twitter

最近看到一个网络图,似乎叫双代号时标网络图(如图,图来自 ccproject 官网)。

网上搜了搜有个叫 ccproject 的软件挺对口的,只不过软件太贵。我并不是真的要管理一个项目,只是看到这个图后想研究 Excel 能不能画。所以就有了这次尝试。

个人觉得最麻烦的应该是精准画箭头了,所以各种查资料写了下面一段 VBA 代码。效果是这样的:选中一些单元格来画箭头,起点是选中范围的左上角单元格的左上角,终点是选中范围的右下角单元格的左上角。这个其实也不是很有用,算是好玩吧。令人惊喜的是这样画的箭头是会随着单元格大小的调整而自动调整的。

Sub DrawArrow()
    Dim str, Start, Finish As String
    Dim MyPos As Integer
    If TypeName(Selection) = "Range" Then
        str = Selection.Address
        MyPos = InStr(1, str, ":", 1)
        If MyPos = 0 Then
            End
        Else
            Start = Left(str, MyPos - 1)
            Finish = Mid(str, MyPos + 1)
        End If
        ActiveSheet.Shapes.AddConnector(msoConnectorStraight, _
            Range(Start).Left, Range(Start).Top, Range(Finish).Left, Range(Finish).Top).Select
        Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadOpen
    End If
End Sub
测试效果:
本文作者: Jing
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 4.0 许可协议。转载请注明出处!