次の方法で共有

VBAでテキストボックスの塗潰しなし ができなくなった

Anonymous
2021-12-21T15:30:26+00:00

VBAで以前はテキストボックスの背景が透明(塗潰しなし)で入力できていたのですが

気が付けば、背景色が透明でなく、白塗潰しで入力されるようになりました。

問題が発生しているのは

OS:Windows 10 Pro 64 ビット

Excel Microsoft 365 MSO (バージョン 2111 ビルド 16.0.14701.20204) 32 ビット

現在でも古いPCのExcel2013では背景が透明(塗潰しなし)で入力できてます。

Excelのバージョンに由来する挙動なのでしょうか?

設定しているVBAを下記に記載しておきます。

Sub 文字挿入単体()

tatehaba1 = ActiveCell.Height

Yokohaba = Selection.Width

Tatehaba = Selection.Height

Yoko = Selection.Left

Takasa = Selection.Top

Migihashi = Yoko + Yokohaba + Futosa \ 2

Hidarihashi = Yoko - Futosa \ 2

Shita = Takasa + Tatehaba

Migi = Yoko + Yokohaba

inptxt = InputBox("文字を入力してください", 文字入力)

If inptxt = "" Then

Exit Sub

End If

ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _

Yoko + 2, Takasa - 2, 0, 0).Select

Selection.Characters.Text = inptxt

Selection.ShapeRange.Fill.Visible = msoFalse

Selection.ShapeRange.Fill.Transparency = 0#

Selection.ShapeRange.Line.Weight = 0.75

Selection.ShapeRange.Line.DashStyle = msoLineSolid

Selection.ShapeRange.Line.Style = msoLineSingle

Selection.ShapeRange.Line.Transparency = 0#

Selection.ShapeRange.Line.Visible = msoFalse

With Selection

.HorizontalAlignment = xlLeft

.VerticalAlignment = xlTop

.Orientation = xlHorizontal

.AutoSize = True

.AddIndent = False

End With

End Sub

Microsoft 365 と Office | Excel | ビジネス向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2021-12-22T02:00:10+00:00

> VBAで以前はテキストボックスの背景が透明(塗潰しなし)で入力できていたのですが > 気が付けば、背景色が透明でなく、白塗潰しで入力されるようになりました。 > Selection.ShapeRange.Fill.Visible = msoFalse > Selection.ShapeRange.Fill.Transparency = 0#
Visible プロパティを False に設定した後で
Transparency プロパティを設定したことによって、
Visible プロパティが自動的に True に設定された結果でしょう。

実行する順番を逆にしてみて下さい。

この回答は役に立ちましたか?

2 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2021-12-22T02:54:42+00:00

そもそも塗りつぶしなし(かつ線もなし)にしたいのであれば、"Selection.ShapeRange...." の部分は

 Selection.ShapeRange.Fill.Visible = msoFalse

 Selection.ShapeRange.Line.Visible = msoFalse

だけで良いですよね。もしこれでダメならバグ決定。

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

2 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2021-12-22T09:59:52+00:00

    Selection.ShapeRange.Fill.Visible = msoFalse

     Selection.ShapeRange.Line.Visible = msoFalse

    ≫≫

    この2行のみにしてみました。

    塗りつぶしなし(かつ線もなし)にできました。

    ありがとうございました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2021-12-22T09:59:02+00:00

    実行する順番を逆にしてみて下さい。

    ≫≫

    逆にしてみました。背景色透明になりました。

    ありがとうございました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません