[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『吹き出しに表示させる文字列』(三ツ矢)
下記のVBAコードは、text_contentsをRange("A1")で吹き出しはA1の文字列が表示されますが
希望は、吹き出しと表示される文字列は別の指定文字列に変更したい。
マクロコードをどのように変更したら良いですか。
例えば、A1「ここから」で吹き出しに「予定: 2m先」のような感じに
'吹き出し表示 ----------
Dim text_contents As String text_contents = Range("A1") ActiveSheet.Shapes.AddShape(msoShapeRectangularCallout, 50, 50, 10, 10).Select With Selection 'テキスト入力 .Text = text_contents '太文字に変更 .Font.Bold = True '文字サイズ変更 .Font.Size = 15 '文字の色変更 .Font.Color = RGB(255, 0, 0) 'テキストボックスの大きさ調整(自動) .AutoSize = True '外枠の色変更 .ShapeRange.Line.Visible = msoTrue .ShapeRange.Line.ForeColor.RGB = RGB(0, 0, 0) '背景色の変更 .ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255) '吹き出しの位置調整 '吹き出しからの右方向距離 .ShapeRange.Adjustments.Item(1) = -0.3 '吹き出しからの下方向距離 .ShapeRange.Adjustments.Item(2) = -1.4 End With ’-----------------------------------------------------------------------
< 使用 Excel:Excel2021、使用 OS:Windows11 >
それはA1セルを参照しないでって意味でしょうか?
なら...↓これは必要ないので削除して
Dim text_contents As String text_contents = Range("A1")
↓これでよいのかな?
.Text = text_contents 変更 → .Text = "予定:2m先"
別のマクロからって話なら...ActiveSheet.Shapes から この図形を探さないといけないけど... (あみな) 2023/12/21(木) 10:44:07
'吹き出し表示
ActiveSheet.Shapes.AddShape(msoShapeRectangularCallout, 50, 50, 10, 10).Select With Selection
'テキスト入力 If ListType = "1" Then .Text = "予定:2m先" Else .Text = "予定1m先" End If
'太文字に変更 .Font.Bold = True
'文字サイズ変更 .Font.Size = 15 (三ツ矢) 2023/12/21(木) 11:25:37
"C1"セルが原点(0,0)からどれぐらいの位置にあるのかをチェックする必要があるので
適当に50,50,10,10を変更しながら希望の位置を見つけるしかないですか ?
(三ツ矢) 2023/12/21(木) 11:40:37
(三ツ矢) 2023/12/21(木) 11:25:37 に対して
>アドバイスを受けて以下のように変更すると"B1"の右下に吹き出しが出ています。
最初のマクロから...B1セル右下にに表示されていると思いますが... 私は、移動させてませんよ。
>(三ツ矢) 2023/12/21(木) 11:40:37 に対して
追加で質問するのも良いですが、されたい事はそれで全てですか?
*図形は1コでこれ以上増えないですか? *セルに表示したい位置にセルの高さと幅で図形の大きさを確定して 確か...F2:G5 みたいに表示ができたような気がしました。 もしくはG5セルとか...( 1セルだとセルが大きくなりますが )
*原点(0,0)から探すって言うより、どこのセルに表示させたいか のが話が早いと思うのですが...
ちょっと...ご飯行きますので後で (あみな) 2023/12/21(木) 12:09:09
msgboxの表示は、小さすぎて確認には向いていないように思えたので
吹き出し表示を考えました。
50,50,10,10 のような実際やってみないと判らないような単位では無く
位置が見た目で選べるならどこのセルに表示させるかは希望にそう提案です。。
やりたいことは、以上で全てです。
追加質問は、ありません。
(三ツ矢) 2023/12/21(木) 12:26:55
下記のようなイメージです
With Range("E2:F4") ActiveSheet.Shapes.AddShape(Type:=msoShapeRectangularCallout, _ Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height).Select Selection.Text = "表示文字" End With
後は、自由に加工してください (あみな) 2023/12/21(木) 12:58:36
但し、オートシェイプには、
MsgBoxが出た時点で作画途中のような図形の回転マークや四角の四隅や真ん中に〇印がでます。
これは消せないのでしょうか
With ws1.Range("F3:F3") ws1.Shapes.AddShape(msoShapeRectangle, _ Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height).Select With Selection
'テキスト入力 If ListType = "Join" Then .Text = "集計型" Else .Text = "単独型" End If
'太文字に変更 .Font.Bold = True
'文字サイズ変更 .Font.Size = 20
'文字の色変更 .Font.Color = RGB(255, 0, 0)
'テキストボックスの大きさ調整(自動) .AutoSize = True
'外枠の色変更 .ShapeRange.Line.Visible = msoTrue .ShapeRange.Line.ForeColor.RGB = RGB(0, 0, 0)
'背景色の変更 .ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
End With End With
'-----------------------------------------------------------------------
Dim rc As VbMsgBoxResult rc = MsgBox("A列に処理リストで問題ないか確認してください。!! " & vbCrLf & _ "処理を実行しますか ?", vbYesNo + vbQuestion, "Make_Form_List") If rc = vbNo Then MsgBox "処理を中止します。"
'シート内の図形を全選択 ActiveSheet.Shapes.SelectAll '選択した図形を削除 Selection.ShapeRange.Delete
End Sub End If
'シート内の図形を全選択 ActiveSheet.Shapes.SelectAll '選択した図形を削除 Selection.ShapeRange.Delete
(三ツ矢) 2023/12/21(木) 13:53:53
そこで以下のように「ws1.Range("I1").Select」を行うと
同じように完成形が出来たので現在はこれで満足しています。
なぜ、このようにしないと作画途中のような状態になるのでしょうか?
又、現在に処理('Dumykey_In ------)で十分と言えるのでしょうか ?
'背景色の変更 .ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
End With End With
'Dumykey_In ------> 追加 ws1.Range("I1").Select
'-----------------------------------------------------------------------
Dim rc As VbMsgBoxResult
(三ツ矢) 2023/12/22(金) 08:31:59
そもそもAddShape(~).Selectで図形を追加して選択するって命令文で、
With Selection ~ End With で、選択された図形に対して処理をしてるんだよね
選択を解除したいならその処理を入れないといけないんだけど、
『選択を解除する』っていう命令は無いから、適当なセル(A1とか)を選択する処理を入れるのが無難
って認識なんだけど合ってるかな...ちょっと自信ない...
(む) 2023/12/22(金) 08:54:40
選択を解除する命令が必要だったのですね。
アドバイスを受けてググって以下のURLを見つけました。
https://club-vba.tokyo/vba-select-shape/
私の言っていた「作画中」とはまさに、URL中の
”SelectAllを使って図形を全選択した状態”の図のような状態でした。
『選択を解除する』っていう命令は無いとの事で
適当なセルを選択する処理を追加した事は的を得た選択だったようです。
これですっきりしました。
(三ツ矢) 2023/12/22(金) 09:17:55
最初からSelectしないコードにするとこんな風
Sub sample() Dim ws As Worksheet, c As Range Set ws = Worksheets(1) Set c = ws.Range("F3") With ws.Shapes.AddShape(msoShapeRectangle, c.Left, c.Top, c.Width, c.Height) With .TextFrame2 With .TextRange .Text = "テキスト" With .Font .Size = 20 .Bold = msoTrue .Fill.ForeColor.RGB = RGB(255, 0, 0) End With End With .WordWrap = msoFalse .AutoSize = msoAutoSizeShapeToFitText End With .Line.Visible = msoTrue .Line.ForeColor.RGB = RGB(0, 0, 0) .Fill.ForeColor.RGB = RGB(255, 255, 255) End With End Sub (´・ω・`) 2023/12/22(金) 11:25:30
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.