[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『矢印の上にテキストを自動入力したい』(mk)
こんにちは。
いま、ガントチャートを作成しており、開始日・終了日を入力の上、作成ボタンを押すと、開始日から終了日まで矢印線を自動で作成出来るようしています。
この矢印の中心あたりに開始から終了までの日数を表示したいのですが、うまくいきません。
メッセージボックスまでは、表示できるようになっているので、もう少しかと思うのですが、矢印線にテキストを追加できないので、困っています。
オートシェイプのmsolineLeftRightArrowも試し、やってみたのですが、矢印が範囲内に収まらず、やめました。
コードは
date1 = days.Find(trgt, , , xlWhole)
date2 = days.Find(trgt.Offset(0, 1), , , xlWhole)
myFuturedays = DateDiff("d", date1, date2)
Set org = days.Find(trgt, , , xlWhole) Set dst = days.Find(trgt.Offset(0, 1), , , xlWhole) Set ctg = wsprf.Range("A4:A8").Find(trgt.Offset(0, -3).Value, , , xlWhole)
Set shp = ActiveSheet.Shapes.AddLine(org.Left + org.Width / 2, _ trgt.Top + trgt.RowHeight / 2, dst.Left + dst.Width / 2, _ trgt.Top + trgt.RowHeight / 2)
MsgBox "" & myFuturedays & ""
です。
ご教授お願いいたします。
< 使用 Excel:Excel2013、使用 OS:Windows8 >
Sub test() Dim R As Range
Set R = Range("D3:F4") With ActiveSheet.Shapes.AddShape(msoShapeLeftRightArrow, R.Left, R.Top, R.Width, R.Height) .Line.Weight = 1 .Adjustments.Item(1) = 0.7 .Adjustments.Item(2) = 0.4 With .TextFrame2 .TextRange.Text = "test" .MarginLeft = 0 .MarginRight = 0 .MarginTop = 0 .MarginBottom = 0 .WordWrap = msoFalse .VerticalAnchor = msoAnchorMiddle .HorizontalAnchor = msoAnchorCenter End With End With End Sub (???) 2018/07/20(金) 15:47
線の矢印だと線しかないので、文字が使えません。 まぁ、セルにでも書けば良いと思いますが。 しかし、太い矢印の内側部分のサイズを0にしてしまうと、見た目線の矢印のようになります。 これなら矢印の内側のテキストが使えるので、文字付き線に見えます。
Sub test2() Dim R As Range
Set R = Range("D3:F4") With ActiveSheet.Shapes.AddShape(msoShapeLeftRightArrow, R.Left, R.Top + R.Height * 2 / 4, R.Width, R.Height / 6) .Line.Weight = 1.5 .Adjustments.Item(1) = 0 .Adjustments.Item(2) = 0.4 With .TextFrame2 .TextRange.Text = "test" .TextRange.Font.Fill.ForeColor.RGB = 0 .MarginLeft = 0 .MarginRight = 0 .MarginTop = 0 .MarginBottom = 0 .WordWrap = msoFalse .VerticalAnchor = msoAnchorBottom .HorizontalAnchor = msoAnchorCenter End With End With End Sub (???) 2018/07/20(金) 16:42
trgt.Top + trgt.RowHeight / 2, dst.Left + dst.Width / 2, _ trgt.Top + trgt.RowHeight / 2) の部分を上記内容に変えるとバカでかい矢印になってしまいます。 以下、コードになります。
Sub ガントチャート作成()
Dim shp As Shape Dim org As Range Dim dst As Range Dim trgt As Range Dim days As Range Dim wsprf As Worksheet Dim ctg As Range Dim myFuturedays As Long Dim date1 As Date, date2 As Date
Set wsprf = Worksheets("設定")
Set days = Range(Range("I3"), Range("I3").End(xlToRight)) ”日程の増減の自動対応、I3から日付”
For Each trgt In Range(Range("D4"), Range("D4").End(xlDown))
Set org = days.Find(trgt, , , xlWhole) Set dst = days.Find(trgt.Offset(0, 1), , , xlWhole) Set ctg = wsprf.Range("A4:A8").Find(trgt.Offset(0, -3).Value, , , xlWhole)
Set shp = ActiveSheet.Shapes.AddLine(org.Left + org.Width / 2, _ trgt.Top + trgt.RowHeight / 2, dst.Left + dst.Width / 2, _ trgt.Top + trgt.RowHeight / 2)
date1 = days.Find(trgt, , , xlWhole)
date2 = days.Find(trgt.Offset(0, 1), , , xlWhole) myFuturedays = DateDiff("d", date1, date2) MsgBox "" & myFuturedays & "" Next End Sub
(mk) 2018/07/20(金) 16:44
マルチポストしているのであればマルチポスト先のmougにもこちらでもらった情報をフィードバックしておいてくれ。 (ねむねむ) 2018/07/20(金) 16:47
Sub ガントチャート作成() Dim org As Range Dim dst As Range Dim trgt As Range Dim days As Range Dim wsprf As Worksheet Dim ctg As Range Dim date1 As Date, date2 As Date Dim R As Range
Set wsprf = Worksheets("設定") Set days = Range(Range("I3"), Range("I3").End(xlToRight))
For Each trgt In Range(Range("D4"), Range("D4").End(xlDown)) Set org = days.Find(trgt, , , xlWhole) Set dst = days.Find(trgt.Offset(0, 1), , , xlWhole) Set ctg = wsprf.Range("A4:A8").Find(trgt.Offset(0, -3).Value, , , xlWhole)
date1 = days.Find(trgt, , , xlWhole) date2 = days.Find(trgt.Offset(0, 1), , , xlWhole)
Set R = Range(Cells(ctg.Row, org.Column), Cells(ctg.Row, dst.Column)) With ActiveSheet.Shapes.AddShape(msoShapeLeftRightArrow, R.Left, R.Top, R.Width, R.Height) .Line.Weight = 1 .Adjustments.Item(1) = 0.7 .Adjustments.Item(2) = 0.4 With .TextFrame2 With .TextRange.Font .Name = "Meiryo UI" .Size = 8 End With .TextRange.Text = DateDiff("d", date1, date2) + 1 .MarginLeft = 0 .MarginRight = 0 .MarginTop = 0 .MarginBottom = 0 .WordWrap = msoFalse .VerticalAnchor = msoAnchorMiddle .HorizontalAnchor = msoAnchorCenter End With End With Next trgt End Sub (???) 2018/07/20(金) 17:52
VBA、始めたばかりで色々と悩んでます。
おすすめの本などあれば、ぜひ教えてください。
今回は、本当にありがとうございました。
(mk) 2018/07/20(金) 18:10
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.