[[20091027161257]] 『オートシェイプの矢印をマクロで』(mo-.-mo) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『オートシェイプの矢印をマクロで』(mo-.-mo)

 オートシェイプの矢印をマクロで作成したいのですが?
 (自動マクロで作成してみましたが)
 始めに任意のセル〜セルを指定してマクロを実行させたいのです。
 その間に矢印を直線で引きたい(セル枠の上の部分に→が付くと良いのですが)
 任意のセルのマクロが判りませんお教え下さい。

 ActiveSheet.Shapes.AddLine(384.75, 555.75, 467.25, 555.75).Select
    Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle
    Selection.ShapeRange.Line.EndArrowheadLength = msoArrowheadLengthMedium
    Selection.ShapeRange.Line.EndArrowheadWidth = msoArrowheadWidthMedium
 End Sub

 (WinXP, Excel2003)
 (mo-.-mo)

 こんなこと?(ROUGE)
 
Sub momo()
Dim rr As Range
If TypeName(Selection) <> "Range" Then Exit Sub
Set rr = Selection
rr.Parent.Shapes.AddLine(rr.Left, rr.Top, rr.Left + rr.Width, rr.Top).Select
With Selection.ShapeRange.Line
    .EndArrowheadStyle = msoArrowheadTriangle
    .EndArrowheadLength = msoArrowheadLengthMedium
    .EndArrowheadWidth = msoArrowheadWidthMedium
End With
rr.Select
End Sub


 (ROUGE)様 有り難う御座います。出来ました。

 (mo-.-mo)

 再度お教え願いませんでしょうか?

 任意のセルを指定しますがその時、線が左のセルの左端より少し(セルの半分位でも)
 先から書き始め、右のセルも右端が少し短く書き終えるような事が出来ますでしょうか?
 →の両サイドを短くしたいのですが、贅沢を言って申し訳ありません。

 宜しくお願い致します。

 (mo-.-mo)


 > rr.Parent.Shapes.AddLine(rr.Left, rr.Top, rr.Left + rr.Width, rr.Top).Select

 rr.Parent.Shapes.AddLine(rr.Left + rr.Cells(1).Width / 2, rr.Top, _
     rr.Left + rr.Width - rr.Cells(rr.Cells.Count).Width / 2, rr.Top).Select

 に差し替えてください。
 (ROUGE)

 (ROUGE)様 有り難う御座います。出来ました、助かりました・・・・感謝感謝です。

 (mo-.-mo)


 再再度お教え願いませんでしょうか?

 下記のマクロでオートシェイプ○を作成しました。
 又位置をセルの右上角を真ん中に来るようにしたいのですが、判りませんでした、
 それと順序で最前面にしたいのですが。 宜しくお願い致します。

 Private Sub CommandButton3_Click()

 hi = 0.95 
 wi = 0.6 

 awide = ActiveCell.Width
 aheight = ActiveCell.Height
 aleft = ActiveCell.Left - awide * (wi - 1) * 0.5
 atop = ActiveCell.Top - aheight * (hi - 1) * 0.5

 ActiveSheet.Shapes.AddShape(msoShapeOval, aleft, atop, awide * wi, aheight * hi).Select
 Selection.ShapeRange.Fill.Visible = msoTrue
 Selection.Characters.Text = ""
 With Selection.Font
        .Name = "MS 明朝"
        .FontStyle = "標準"
        .Size = 9

 End With

 End Sub

 (mo-.-mo)


 With ActiveCell
    awide = .Width
    aheight = .Height
    aleft = .Offset(, 1).Left - awide / 2
    atop = .Top - aheight / 2
 End With
 With ActiveSheet.Shapes.AddShape(msoShapeOval, aleft, atop, awide, aheight)
    .Fill.Visible = msoTrue
    .TextFrame.Characters.Text = ""
    .TextFrame.Characters.Font.Name = "MS 明朝"
    .TextFrame.Characters.Font.FontStyle = "標準"
    .TextFrame.Characters.Font.Size = 9
    .ZOrder msoBringToFront
 End With

 細かい調整は自分でしてね。
 BJ

 BJ様 有り難うございます。

 hi = 0.95 ' 楕円高さのセル高さ倍率1.5位,適宜変更可能
 wi = 0.6 '楕円幅のセル幅倍率1.2位   適宜変更可能

 最初作成した部分で(hi = 0.95 wi = 0.6) ここで○のサイズを調整していましたが
 何処でサイズ変更して良いのか???何せ初心者な物で申し訳ありません。

 (mo-.-mo)


 算数計算。
 自分であれこれやってください。
 これは、初心者だからとかは、関係無いと思う。
 計算した結果の変数を利用した方が解り易くなるのかも。
 BJ

 With ActiveCell
   awide = .Width
   aheight = .Height
   aleft = .Offset(, 1).Left - awide * 1.2 / 2
   'atop = .Top - aheight / 2
   atop = .Top - aheight * 1.5 / 2
 End With
                  この辺のaleftとかを上と一緒にしないで
                                 別変数として、計算した結果にすれば解りやすい?
 With ActiveSheet.Shapes.AddShape(msoShapeOval, aleft, atop, awide * 1.2, aheight * 1.5)

 BJ様 有り難うございました。
(マクロでオートシェイプ○を作成しました。)色々調べて最初の○マクロがやっと出来ました、
 意味が判って作成出来たのでは無いので、数字をあたったりしてやっと出来たのです、 
 何も調べずに質問しているのでは無いです、初心者には本当に判らないのです、
 判らない物がマクロなど使うなと言われれば仕方がないですが、
 判って有る方から見ればそんなこともと思われるかも知れませんが、
 だから初心者ですと記入いたしました、申し訳有りませんでした。
 (mo-.-mo)


 参考になれば… (1or8)
[[20071114041820]]『土曜日を□、日・祝日を○で囲みたい』(シュー)


 >数字をあたったりしてやっと出来たのです
 私もそうですよ。
                          ↓     ↓    ↓      ↓
 AddShape(msoShapeOval, aleft, atop, awide, aheight)
 この辺なんかどれがどこ当たるのか、いちいちサイズ変えて確認してます。
 ヘルプ見ればいいのでしょうが、これもなんか面倒で、結局もっと面倒な事してます。
 BJ

 BJさんのコードで言うと、

 >With ActiveCell
 >  awide = .Width
 >  aheight = .Height

 ここでアクティブセルの高さを幅を円の大きさにしているので
 そこが変更箇所です。

 下のように。 

 awide = 0.6
 aheight = 0.95
 With ActiveCell
    aleft = .Offset(, 1).Left - awide / 2
    atop = .Top - hi / 2
 End With
 With ActiveSheet.Shapes.AddShape(msoShapeOval, aleft, atop, awide, aheight)
    .Fill.Visible = msoTrue
    .TextFrame.Characters.Text = ""
    .TextFrame.Characters.Font.Name = "MS 明朝"
    .TextFrame.Characters.Font.FontStyle = "標準"
    .TextFrame.Characters.Font.Size = 9
    .ZOrder msoBringToFront
 End With

 1つづつヘルプを見れば少しづつでも理解できると思います。
 脱初心者目指して頑張ってください。
 (momo)

 (momo)様 BJ様 (1or8)様 有り難うございました。

 脱初心者目指して頑張ります、なにせローマ字も苦手なおばあちゃんですのでトホホ。

 (mo-.-mo)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.