プロが教える店舗&オフィスのセキュリティ対策術

エクセルVBA初心者です。
現在、エクセルのVBAにて、セルの選択範囲に合わせて図形挿入一覧にある図形の挿入は、このサイトの皆様のお力添えのおかげで無事にできるようになりました。
その節にご教示いただきました皆様には改めて感謝いたします。

今回の質問は、ほしい図形の形状が一覧にはない場合、図形のカスタマイズや新規登録ができないかをお伺いしたいと思います。
また、私が考えたコードにそれを応用していれるには、どのようにすればよいかを伺いたいと思います。ちなみに私が入れたい図形の形状は、線分で「や」などのかぎ型で角がRで丸まっているもので、図形挿入のコードは下記のとおりです。

Sub 作図()
Dim R As Range
Set R = Selection
With ActiveSheet.Shapes.AddShape(msoShapeHexagon, R.Left, R.Top, R.Width, R.Height)

.Line.ForeColor.RGB = RGB(0, 0, 0) '枠線の色
.Line.Weight = 1 '太さ
.Line.Style = msoLineSingle '線のスタイル
.Line.DashStyle = msoLineSolid '線のタイプ
.Fill.Visible = True'塗りつぶし
.Fill.Transparency = 0 ’透明度
.Fill.ForeColor.RGB = RGB(217, 217, 217) ’塗りつぶし色
With .TextFrame
.HorizontalAlignment = xlHAlignCenter '中央寄せ
.VerticalAlignment = xlVAlignCenter
With .Characters 'テキスト
.Text = InputBox("テキストを入力してください。", "テキストの入力", "TEXT") '文字列
.Font.Size = 14 '文字のサイズ
.Font.Bold = True '太字
.Font.Color = RGB(0, 0, 0) '文字の色

End With
End With
End With

End Sub

質問者からの補足コメント

  • すいません。「や」と見え、やを強調して見えますが、実は右上がりカギ型の線分で同様にカギ型の線分が描きたいです。
    セルの選択範囲に合わせて大きさが変えられるならどのような作り方でも構わないのですが、何分初心者なので、具体的にご教示いただければありがたいです。

      補足日時:2020/08/24 11:25

A 回答 (2件)

こんにちは、


>、ほしい図形の形状が一覧にはない場合、図形のカスタマイズや新規登録ができないかをお伺いしたいと思います。

ほしい図形をExcel上で作成、加工できるのであれば、マクロの自動記録を行い、編集すれば出来るのではないかと思います。

もし、容易に作成できないモノの場合は、画像作成ツール(ソフト)などを使い作成し、
その画像をフォルダなどに入れ保存しておけば、容易に貼り付け、リサイズなどは出来ると思います。
テキストを表示する場合は、テキスト可能なシェイプを重ねてグループ化すれば出来ると思います。

>図形の形状は、線分で「や」などのかぎ型で角がRで丸まっているもので、
どんなものか分からないのですが、、線なのであれば、LineFormatオブジェクトで作成します。
参考になるか分かりませんが、http://officetanaka.net/excel/vba/tips/tips177.htm
    • good
    • 0

例えば、曲折矢印を使う方法でカギ型を作るのはダメですか?



質問のマクロを応用すると、以下のようになります。

Sub 作図_2()
Dim R As Range
Set R = Selection
' 曲折矢印を新規作成
With ActiveSheet.Shapes.AddShape(msoShapeBentArrow, R.Left, R.Top, R.Width, R.Height)
' 調整値を指定して線分のように表示
.Adjustments.Item(1) = 0
.Adjustments.Item(2) = 0
.Adjustments.Item(3) = 0
.Adjustments.Item(4) = 0.2

.Line.ForeColor.RGB = RGB(0, 0, 0) '枠線の色
.Line.Weight = 1 '太さ
.Line.Style = msoLineSingle '線のスタイル
.Line.DashStyle = msoLineSolid '線のタイプ
.Fill.Visible = False '塗りつぶし
.Fill.Transparency = 0 '透明度
' .Fill.ForeColor.RGB = RGB(217, 217, 217) '塗りつぶし色
With .TextFrame
.HorizontalAlignment = xlHAlignCenter '中央寄せ
.VerticalAlignment = xlVAlignCenter
With .Characters 'テキスト
.Text = InputBox("テキストを入力してください。", "テキストの入力", "TEXT") '文字列
.Font.Size = 14 '文字のサイズ
.Font.Bold = True '太字
.Font.Color = RGB(0, 0, 0) '文字の色

End With
End With
End With

End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
お礼が遅くなり申し訳ありません。
これができて大変喜んでいます。
またよろしくお願いします。

お礼日時:2020/08/27 18:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!