[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『図形の矢印→の後ろに文字をくっつけたい』(わた)
矢印→の後ろ(始点)にセルに入力されている▲をくっつけたいのですが
どうやったらいいのでしょうか?
→はマクロで作成したもので、▲は関数でセルに表示している
記号です。
▲→となるのが理想です。
→はActiveSheet.Shapes.AddLineで作成しています。
よろしくお願いします!
< 使用 Excel:Excel2016、使用 OS:Windows10 >
▲のフォントサイズやセルの幅に影響されるので 難しいと思います。
手っ取り早いのは、セル幅を▲一文字分にしておいて、 LineのLeftを▲のセルからOffset(,1)したセルのLeftに する、という方法でしょうか。 (OK) 2020/02/25(火) 09:24
B2に▲が入力されていて、セル幅が既に調整されているとの前提のマクロです。 ↓をLineに登録しておいて、Lineをクリックしたら▲にぴったりと張り付きます。
Sub test() With ActiveSheet.Shapes(Application.Caller) .Left = Cells(2, 2).Offset(, 1).Left .Top = Cells(2, 2).Top + Cells(2, 2).Height / 2 - .Height / 2 End With End Sub (OK) 2020/02/25(火) 09:39
以下は、線吹き出し(枠付き)を使う例です。
Sub test() Dim cw As String
With Range("B2") cw = .Text With ActiveSheet.Shapes.AddShape(msoShapeLineCallout1, .Left, .Top, .Width, .Height) .Adjustments.Item(1) = 0.5 .Adjustments.Item(2) = 1 .Adjustments.Item(3) = 0.5 .Adjustments.Item(4) = 3 .Line.EndArrowheadStyle = msoArrowheadTriangle .Fill.Visible = msoFalse .Line.ForeColor.RGB = RGB(0, 32, 96) With .TextFrame2 .VerticalAnchor = msoAnchorMiddle .HorizontalAnchor = msoAnchorCenter .TextRange.Text = cw .TextRange.Font.Fill.ForeColor.RGB = RGB(0, 32, 96) End With End With End With End Sub
なお、文字の枠線と矢印の枠線は表示/非表示や色等、プロパティが共通なので、どちらかだけ違う色とかできません。 別々にしたいならば、2つの図形を使って表現するか、文字列はセルに置いたままで考えてください。
(???) 2020/02/25(火) 10:13
B2〜E2まで→
F2に▲があったら
A2に▲がくるようにしたいです!
セルの幅ですが、▲が2つ並んで▲▲の場合もあるので
幅を統一するのは出来なそうです。
三角が2つの場合は▲▲→となるのが理想です。
よろしくお願いします!
(わた) 2020/02/25(火) 10:19
シェイプに式を登録し、 =A1 のように ▲が入ったセルを参照
で、そのシェイプを矢印に合わせて移動、 としたほうが手っ取り早いような。
矢印に合わせてセルを移動、というのが よくわかりません。
(OK) 2020/02/25(火) 10:56
↑の方法だと、セルの内容に合わせてシェイプの幅を 調整する必要が出てきますね。 ボツにしてください。 (OK) 2020/02/25(火) 11:12
>B2〜E2まで→ >F2に▲があったら >A2に▲がくるようにしたいです!
F2に▲があったら ⇒ A2〜E2まで ▲──→
F2に▲が無ければ ⇒ B2〜E2まで ──→
こんな事?
Sub Test() Dim myW As Single, n As Long n = UBound(Split(Range("F2").Value, "▲")) With IIf(n > 0, Range("A2"), Range("B2")) If n > 0 Then '横書きテキストボックスに▲を描く With ActiveSheet.Shapes.AddTextbox(1, .Left, .Top - 2, 25, 25) .TextFrame.AutoSize = msoTrue .TextFrame.Characters.Text = String(n, "▲") .TextFrame.Characters.Font.Size = 10 .Fill.Visible = msoFalse '塗りつぶしなし .Line.Visible = msoFalse '線なし myW = .Width - 7 End With End If With ActiveSheet.Shapes.AddLine(myW + .Left, .Top + .Height / 2, .Offset(, IIf(n > 0, 5, 4)).Left, .Top + .Height / 2) .Line.EndArrowheadStyle = msoArrowheadOpen .Line.ForeColor.RGB = RGB(0, 0, 0) End With End With End Sub
(ピンク) 2020/02/25(火) 23:04
こんな感じなのですが、矢印が動いても
同じ動作できるようにしたいのですが
可能でしょうか?
A B C D E F
1
2 ▲ ー ー → ▲
3 ▲ → ▲
こんな感じになればいいのですが(;_;)
よろしくお願いします!
(わた) 2020/02/26(水) 20:55
>こんな感じなのですが、矢印が動いても >同じ動作できるようにしたいのですが
誰が矢印を動かすの?
動いた位置を知る方法は?
▲ が有るのはF列が前提
解らない事だらけ
取敢えずセルが置かれた行上にF列まで矢印を引きます。
Sub Test2() Dim myW As Single, n As Long, R As Long R = ActiveCell.Row n = UBound(Split(Cells(R, "F").Value, "▲")) With IIf(n > 0, Cells(R, "A"), Cells(R, "B")) If n > 0 Then '横書きテキストボックスに▲を描く With ActiveSheet.Shapes.AddTextbox(1, .Left, .Top - 2, 25, 25) .TextFrame.AutoSize = msoTrue .TextFrame.Characters.Text = String(n, "▲") .TextFrame.Characters.Font.Size = 11 .Fill.Visible = msoFalse '塗りつぶしなし .Line.Visible = msoFalse '線なし myW = .Width - 7 End With End If With ActiveSheet.Shapes.AddLine(myW + .Left, .Top + .Height / 2, .Offset(, IIf(n > 0, 5, 4)).Left, .Top + .Height / 2) .Line.EndArrowheadStyle = msoArrowheadOpen .Line.ForeColor.RGB = RGB(0, 0, 0) End With End With End Sub (ピンク) 2020/02/27(木) 00:03
または、セルの制限を無視して自由に▲を移動させたいのならば、完全無視されてしまいましたが、私の案だと、テキストボックスに線がくっついた図形を使っていたので、どっちを動かしても連動して同時に動きます。 テキストボックスには枠を付けたくないならば、応用案として、線を矢印型にするのではなく、矢印の図形を使うという手もあります。 矢印の図形は中に文字列を書くため太目なのですが、これはサイズを変えて細くすれば、線のようにもできます。 これなら、枠の無いテキストボックスと矢印のセットにできますよ。(テキストボックス部分は、右マージンを大きくするとかで、矢印の外に置くこともできます)
(???) 2020/02/27(木) 10:44
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.