Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3042 / 13644 ツリー ←次へ | 前へ→

【64638】データーどうし線を引く トキノハジメ 10/2/27(土) 19:32 質問[未読]
【64639】Re:データーどうし線を引く ponpon 10/2/27(土) 19:51 発言[未読]
【64646】Re:データーどうし線を引く トキノハジメ 10/2/28(日) 10:32 お礼[未読]

【64638】データーどうし線を引く
質問  トキノハジメ  - 10/2/27(土) 19:32 -

引用なし
パスワード
   いつもお世話になります。
以下のコードでデーターが有る時は線が引けるのですがデーターが欠けると
D のみにしか線が引けないのですが改良点を教えてください。
たとえば T5, U5 にデーターが無い時等です。

Sub Sen()
Dim Cel As Range, Ans As Variant
For Each Cel In Range("D5:U5")
  If Cei.Value <> "" Then
   Ans = Application.Match(Cel.Value, Row(14), 0)
   If Not IsError(Ans) Then
    Call bobo(Cel, Cells(14, Ans))
   End If
  End If
Next
End Sub

Sub bobo(Cel As Range, RG As Range)
Dim SttL As Double, SttT As Double
Dim EndL As Double, EndT As Double
  SttL = Cel.Left + Cel.Width / 2
  SttT = Cel.Offset(1).Top
  EndL = RG.Left + RG.Width / 2
  EndT = RG.Top

  With ActiveSheet.Shapes.AddLine(SttL,SttT,EndL,EndT)
     .Line.EndArrowheadStyle = mosArrowheadTriangle
  End With
End Sub  

【64639】Re:データーどうし線を引く
発言  ponpon  - 10/2/27(土) 19:51 -

引用なし
パスワード
   よくわかってませんが、
ミスが2カ所ほどあるようですが、訂正すると
ちゃんと引かれているようですが・・・・

Option Explicit

Sub Sen()
Dim Cel As Range, Ans As Variant
For Each Cel In Range("D5:U5")
  If Cel.Value <> "" Then
   Ans = Application.Match(Cel.Value, Rows(14), 0)
   If Not IsError(Ans) Then
    Call bobo(Cel, Cells(14, Ans))
   End If
  End If
Next
End Sub

Sub bobo(Cel As Range, RG As Range)
Dim SttL As Double, SttT As Double
Dim EndL As Double, EndT As Double
  SttL = Cel.Left + Cel.Width / 2
  SttT = Cel.Offset(1).Top
  EndL = RG.Left + RG.Width / 2
  EndT = RG.Top

  With ActiveSheet.Shapes.AddLine(SttL, SttT, EndL, EndT)
     .Line.EndArrowheadStyle = msoArrowheadTriangle
  End With
End Sub

Sub kesu()
 ActiveSheet.DrawingObjects.Delete
 
End Sub

【64646】Re:データーどうし線を引く
お礼  トキノハジメ  - 10/2/28(日) 10:32 -

引用なし
パスワード
   ▼ponpon さん:
>よくわかってませんが、
>ミスが2カ所ほどあるようですが、訂正すると
>ちゃんと引かれているようですが・・・・
>
>Option Explicit
>
>Sub Sen()
>Dim Cel As Range, Ans As Variant
>For Each Cel In Range("D5:U5")
>  If Cel.Value <> "" Then
>   Ans = Application.Match(Cel.Value, Rows(14), 0)
>   If Not IsError(Ans) Then
>    Call bobo(Cel, Cells(14, Ans))
>   End If
>  End If
>Next
>End Sub
>
>Sub bobo(Cel As Range, RG As Range)
>Dim SttL As Double, SttT As Double
>Dim EndL As Double, EndT As Double
>  SttL = Cel.Left + Cel.Width / 2
>  SttT = Cel.Offset(1).Top
>  EndL = RG.Left + RG.Width / 2
>  EndT = RG.Top
>
>  With ActiveSheet.Shapes.AddLine(SttL, SttT, EndL, EndT)
>     .Line.EndArrowheadStyle = msoArrowheadTriangle
>  End With
>End Sub
>
>Sub kesu()
> ActiveSheet.DrawingObjects.Delete
> 
>End Sub

ponponさん 有難うございました。今後ともよろしくお願いいたします。

3042 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free