|
|
|
|
|
|
방법이 있을까 싶었는데
공부해 보니 구현이 되네요.
화살표를 그리는 것은 매크로 기록 기능을 이용하면 공부할 수 있습니다.
문제는 특정 셀의 좌표 값을 알아낼 수 있는가 하는 것.
Cells(Range) 개체의 속성 중 Left, Top, Width, Height 등의 속성을
참조하면 됩니다. 각각 좌상단 위치, 폭(열폭), 행 높이 등을
Pixel 값으로 반환해 줍니다.
Connect 프로시저에서 상수 값들을 수정하면
데이터의 개수나 배치 위치 등을 변경할 수 있습니다.
그리고 이 설명을 잘 응용하면 가로로 연결하게 하는 것도 가능하겠지요.
(사실은 그게 더 쉬울 것 같네요)
초기화 루틴도 만들어 두었습니다.
Sub Connect()
Const r1 = 2: '원 데이터가 있는 행 번호
Const r2 = 5: '비교할 데이터가 있는 행 번호
Const cs = 1: '데이터의 범위(왼쪽 끝 열번호)
Const ce = 5: '데이터의 범위(오른쪽 끝 열번호)
Dim c1 As Integer
Dim c2 As Integer
Dim text As String
Dim bx As Integer
Dim by As Integer
Dim ex As Integer
Dim ey As Integer
For c1 = cs To ce
text = Cells(r1, c1)
With Cells(r1 + 1, c1)
bx = .Left + .Width / 2
by = .Top
End With
For c2 = cs To ce
With Cells(r2, c2)
If .Value = text Then
ex = .Left + .Width / 2
ey = .Top
ActiveSheet.Shapes.AddConnector(msoConnectorStraight, bx, by, ex, ey).Select
Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle
Exit For
End If
End With
Next c2
Next c1
End Sub
Sub ClearConnectors()
Dim s As Integer
For s = ActiveSheet.Shapes.Count To 1 Step -1
With ActiveSheet.Shapes(s)
If .Name Like "*Connector*" Then .Delete
End With
Next s
End Sub
|
|
[불량 게시물 신고] |
|
|
|
작성일 : 2017-08-16(12:22)
최종수정일 : 2017-08-16(12:22) |
|
|
|
|