[[20200110132501]] 『コードの修正をお願いします。』(みかん) ページの最後に飛ぶ

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

 

『コードの修正をお願いします。』(みかん)

いつもお世話になっております。
下記のコードについてご教授ください。

1.マクロを動かすと枠が「黒」にならず「グレー」になるのはなぜでしょうか。
2.テキストボックスの「垂直位置が上揃え」になるコードはありますか。
3.テキストボックスの余白を上下左右「0.3」にしたいです。
  現在は0.29?pと表示されています。
4.プロパティの設定をセルに合わせて移動するがサイズ変更はしないに変更できないのはなぜでしょうか。
  「.Placement = xlFreeFloating」を加えるとコンパイルエラーが出ます。

よろしくお願いします。

Sub makeTextbox()

Dim TxtSample As Shape
Dim AC As Object

Set AC = ActiveCell

Set TxtSample = ActiveSheet.Shapes.AddTextbox( _
msoTextOrientationHorizontal, Left:=AC.Left, Top:=AC.Top, Width:=100, Height:=200)

With TxtSample
.TextFrame.Characters.Text = "<06> 新規  個  (:) "
.Line.Style = msoLineThickBetweenThin 'テキストボックスに入れる文字

With .Line 'テキストボックスの外枠
.Weight = 0.75 '外枠の線の太さ
.ForeColor.RGB = RGB(0, 0, 0) '外枠の色
End With

With .TextFrame2.TextRange.Characters(1, Len(.TextFrame.Characters.Text)).Font
.Bold = msoTrue '太字
.Size = 20 '文字の大きさ
.Fill.ForeColor.RGB = RGB(0, 0, 0) '文字の色
End With

With .TextFrame '余白設定

      .MarginLeft = 8.1
      .MarginRight = 8.1
      .MarginTop = 8.1
      .MarginBottom = 8.1
    End With

.TextFrame.AutoSize = True 'テキストボックスのサイズの自動調整
End With

End Sub

< 使用 Excel:unknown、使用 OS:unknown >


1.黒になってますよ? 線が細いから灰色に見えるだけでは? 赤とかに変えて試してみましょう。
2..VerticalAnchorプロパティですが、デフォルトで上揃えですよ? AutoSizeを指定しているから意味無いですが。
3.8.1って、どこから持ってきた数値でしょう? ポイント指定なので、cm→point変換しないといけません。 0.3cmならば8.5くらいですね。
4.Shapeに対してPlacementプロパティを指定ですが、テキストボックスに指定しようとしませんでしたか?

判りやすいように、赤枠、赤文字に変えてみた例なぞ。

 Sub test()
    With ActiveCell
        With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, Left:=.Left, Top:=.Top, Width:=100, Height:=200)
            With .Line
                .Style = msoLineThickBetweenThin
                .Weight = 0.75
                .ForeColor.RGB = RGB(255, 0, 0)
            End With
            With .TextFrame
                .AutoSize = True
                .MarginLeft = Application.CentimetersToPoints(0.3)
                .MarginRight = Application.CentimetersToPoints(0.3)
                .MarginTop = Application.CentimetersToPoints(0.3)
                .MarginBottom = Application.CentimetersToPoints(0.3)
            End With
            With .TextFrame2
                .VerticalAnchor = msoAnchorTop
                With .TextRange
                    With .Characters.Font
                        .Bold = msoTrue
                        .Size = 20
                        .Fill.ForeColor.RGB = RGB(255, 0, 0)
                        .Fill.Transparency = 0
                        .Fill.Solid
                    End With
                    .Characters.Text = "<06> 新規  個  (:) "
                End With
            End With
        End With
    End With
    ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Placement = xlFreeFloating
 End Sub
(???) 2020/01/10(金) 15:11

修正したら、なんか掲示板の表示がおかしくなりました…。
(???) 2020/01/10(金) 15:13

ご返信ありがとうございます。
2から4についてはご指摘の通りの間違いをしておりました。
今後のためにも自分で書けるように勉強しておきます。ありがとうございました。

(みかん) 2020/01/10(金) 16:06


1についてはテキストボックスの作成方法が記憶マクロで作ったのと違うみたいで、外枠の細さのptは同じ設定ですが、印刷すると細さが若干違いました。
お気づきの際にでもこちらについても教えてください。
よろしくお願いいたします。

手動の場合に使用したテキストボックスは、挿入>図>テキストボックス横です。
(みかん) 2020/01/10(金) 16:11


msoLineThickBetweenThinだと、太線の周りに細線がある感じなので、0.75とかめいっぱい細いと、それを更に細くした外側の線1本しか表示されないので、意味無いですよ? 1本線ならば、普通にmsoLineSingleを指定すれば良いのではないでしょうか。
https://docs.microsoft.com/ja-jp/office/vba/api/office.msolinestyle
(???) 2020/01/10(金) 16:19

早速ご返信ありがとうございます。
ご指摘通りでした!
お付き合いいただき本当にありがとうございました。

(みかん) 2020/01/10(金) 16:22


コメント返信:

[ 一覧(最新更新順) ]


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