Excel VBA实现箭头连接单元格内部(中心)的方法咨询
解决Excel VBA连接单元格中心的问题
你不能直接把Left/Top换成Center的原因很简单——Excel的Range对象根本没有Center这个属性。要获取单元格中心坐标,得自己手动计算:
- 水平中心 = 单元格左边界位置 + 单元格宽度的一半
- 垂直中心 = 单元格上边界位置 + 单元格高度的一半
修改后的代码直接计算两个单元格的中心坐标来绘制连接线,同时去掉了没必要的Select操作,让代码更高效:
Sub arrow1() Dim ws As Worksheet Dim rng1 As Range, rng2 As Range Dim connShape As Shape ' 指定目标工作表和单元格 Set ws = ActiveSheet Set rng1 = ws.Range("B2") Set rng2 = ws.Range("C10") ' 计算两个单元格的中心坐标 Dim x1 As Double, y1 As Double Dim x2 As Double, y2 As Double x1 = rng1.Left + rng1.Width / 2 y1 = rng1.Top + rng1.Height / 2 x2 = rng2.Left + rng2.Width / 2 y2 = rng2.Top + rng2.Height / 2 ' 添加连接线并设置箭头样式 Set connShape = ws.Shapes.AddConnector(msoConnectorStraight, x1, y1, x2, y2) connShape.Line.EndArrowheadStyle = msoArrowheadOpen End Sub
内容的提问来源于stack exchange,提问作者Jo Jomax
相关产品推荐
相关产品推荐

