• ベストアンサー

EXCEL 範囲指定後矢印線を引くマクロの作り方

範囲選択した任意(例:A1~C1)のセルに、オートシェイプの矢印線を自動的に引くマクロの作り方を教えて下さい。 できれば、矢印線の始点にオートシェイプの丸(黒丸ではなく白丸)も一緒に引けるマクロも教えて下さい。 範囲指定するセルの長さは一定ではなく、長さがいろいろになります。 工程表を作成するにあたり、同じ手順を繰り返す為、マクロ化したいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

横方向のみですが、 Sub Test()   Dim TP, LF, WD   TP = Selection.Top + (Selection.Height / 2)   LF = Selection.Left   WD = Selection.Width   ActiveSheet.Shapes.AddShape(msoShapeOval, LF, TP - 3, 6, 6).Select   ActiveSheet.Shapes.AddLine(LF + 6, TP, LF + WD, TP).Select   Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle End Sub

11hi08yo04ta
質問者

お礼

解決です。完璧です。ありがとうございました。 ここ1ヶ月間悶々と悩んでいたのです。 このVBAの記述内容が理解できるように精進いたします。

その他の回答 (1)

  • komet163
  • ベストアンサー率51% (22/43)
回答No.2

こんにちは。 選択範囲の始点列中央から終点列中央へ、 選択範囲の縦中央を通り、始点が白丸の矢印を作成します。 ○の直径は、選択範囲の第1行の高さに係数を掛けています。 その他 細かい点は、「マクロの記録」を参考にご自分でカスタマイズしてください。 またマクロの登録方法もお任せします。 Sub Macro1() Dim rRng As Range Dim X(1) As Single Dim Y As Single Dim D As Single Dim shpRef(1) As Shape Dim iColor As Long Dim i As Long On Error Resume Next Set rRng = Selection If Err Then Exit Sub On Error GoTo 0 iColor = 8 '色 With rRng With .Rows(1) D = .Height * 0.75 '丸の直径 係数 End With If .Columns.Count = 1 Then Exit Sub With .Columns(1) X(0) = .Left + .Width / 2 End With With .Columns(.Columns.Count) X(1) = .Left + .Width / 2 End With Y = .Top + .Height / 2 End With With ActiveSheet.Shapes Set shpRef(0) = .AddLine(X(0) + D / 2, Y, X(1), Y) Set shpRef(1) = .AddShape(msoShapeOval, X(0), Y, D, D) With shpRef(1) .Top = .Top - .Height / 2 .Left = .Left - .Width / 2 End With End With For i = 0 To 1 With shpRef(i) .Fill.Visible = msoFalse .Line.Weight = 1# .Line.DashStyle = msoLineSolid .Line.Style = msoLineSingle .Line.Transparency = 0# .Line.Visible = msoTrue .Line.ForeColor.SchemeColor = iColor .Visible = msoCTrue End With Next With shpRef(0).Line .EndArrowheadStyle = msoArrowheadTriangle .EndArrowheadLength = msoArrowheadLengthMedium .EndArrowheadWidth = msoArrowheadWidthMedium End With ActiveSheet.Shapes.Range(Array(shpRef(0).Name, shpRef(1).Name)).Select With Selection.ShapeRange .Group.Select .LockAspectRatio = msoTrue End With rRng.Select End Sub

11hi08yo04ta
質問者

お礼

ありがとうございます。

関連するQ&A

  • ワードのオートシェイプの直線について

    オートシェイプの書式設定で、 矢印の始点の黒丸を○に変えることはできるでしょうか?。 よろしくお願い致します。

  • ★エクセルで矢印

    エクセルやワードで矢印を←このように記号で入れるとき、始点の部分を小さく、矢印の部分を大きく描くにはどのようにしたら良いのですか? オートシェイプでは出来ない様に思うのですが…。

  • Excelで矢印。

    セルA2からセルA1に移動したということを矢印を使って入力したいのですが、湾曲した矢印はオートシェイプの曲線や矢印オートシェイプの線を細くしたりして使うしかないでしょうか? セルB2からセルA2の中に上向きの湾曲矢印を書きたいのですが、ほかに方法はありますか?

  • エクセルマクロに詳しい方

    いつもご質問ばかりで申し訳ございません。 エクセルのマクロで質問なんですが、ある列のある範囲(例えばG列の3~20)の各セルの間(G3とG4、G4とG5といった感じです)にオートシェイプの矢印マークを書き込む マクロって可能なのでしょうか?矢印の向きは左向きで、長さは矢印のみぐらいの長さで、矢印の角度はなしです。 もしこんなマクロが可能なら教えて下さい。 よろしくお願い致します。          以  上

  • エクセルで指定セル範囲内の画像・オートシェイプ・値をマクロを使って削除したい

    エクセル2003のマクロについての質問になります。 "B2:D2,B3:F10"を指定範囲として,その中に存在する画像・オートシェイプ及び, 同範囲内のセルに入力されている値を一度に削除するマクロを教えてください。 画像・オートシェイプは指定範囲に一部でも掛かっていれば削除対象にしたいと思っています。 なお,指定範囲には罫線,結合セル,入力規則(プルダウン),マクロ登録オートシェイプ,数式が存在しますが,それらは残したままにしたいと思っています。 (マクロ登録オートシェイプと数式については,残したままにすることは困難に感じるので,無理そうならそれらは除外してお願いします。) マクロについて初心者ですので,コピーペーストでそのまま使用できる状態で回答頂けると助かりますm(__)m よろしくお願いします。

  • エクセルマクロでの丸囲み文字

    初めて質問します。 エクセルについてです。 あらかじめ一つのセル内には文字が入っていまして、 マクロのショーカット等でキーを押すとそのセル内の 文字にオートシェイプの丸が付くようにしたいのです。 例) 1.あらかじめ各セル内に1 2 3が入力されている。 1  2  3   (各セル内) 1  2  3   (各セル内) 1  2  3   (各セル内) 1  2  3   (各セル内) 2.マクロのショートカットキー等を押すと1 2 3を丸で囲める。 (1)  2 3   (各セル内) 1  (2) 3   (各セル内) (1)  2 3   (各セル内) 1  2 (3)   (各セル内) 以上です。 ここで、例)では1,2,3としてますが、I,II,IIIを使用したく、 I,II,IIIの丸付文字はないので、オートシェイプの丸しかないの かなと思います。 このようなマクロができるのなら教えていただきたいです。 ちなみに私はマクロは判りません。 以上です。 使用OSはWinXP、エクセルは2003です。 どなたか判る方いましたら、教えていただけないでしょうか? よろしくお願いします。

  • Excel マクロについて

    Excelで、セルを選択して、マクロを実行すると、その選択したセルに赤マル(オートシェイプの)がはいるようなマクロをつくりたいのですが・・・。まだ、マクロは使ったことが無いもので・・・。詳しくお願いします。

  • エクセルのマクロで、知恵をお貸しください。

    エクセルのマクロで、知恵をお貸しください。 A1 A2 A3 A4 A5にあるオートシェイプ(矢印)  →  →  →  →  → を範囲選択で、 (1)B1以降横につなげるマクロは、できますか。   →→→→→ (2)B1とB2に交互に(列は重ねず)並べるマクロは、可能でしょうか。   → → →    → →

  • エクセル マクロ オートシェイプ 縦線

    エクセルのマクロで,以下の条件でオートシェイプの縦線を引きたいと思っています。 条件(1) 縦線を引く範囲は,セルを選択している範囲(任意)の中央を通るようにしたいです。 条件(2) 縦線の太さは一番細い線,色は赤色です。 なお,条件(2)の線の太さ,線の色は,マクロのどの部分を変更すればよいのかもご教授いただけるとありがたいです。 どうぞよろしくお願いいたします。

  • セル範囲と図形を指定してVBAで削除するには?

    エクセルで一枚のシートに複数のオートシェイプ(○、△、□)を使用したものがあります。 オートシェイプを使用しているセルの範囲は(A1:G20)と(AP1:AX20)の二箇所なのですが、 VBAで(A1:G20)の範囲にあるオートシェイプ(○のみ)を削除する事はできますか? (A1:G20)の範囲にあるオートシェイプは全体がこのセル範囲に入っています。 手動で、オブジェクトの選択で範囲指定をした後削除という方法もあるのですが この削除の作業の前後に他のVBAを使用しているので、 VBAで削除が出来ればと思います。 いろいろ検索したのですが、セル範囲もしくは図形のいずれかを指定して 削除する方法はあったのですが、両方を指定してのVBAがわかりませんでした。 よろしくお願いいたします。

専門家に質問してみよう