• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBAのテキストボックスの文字の位置)

Excel VBAのテキストボックスの文字の位置

このQ&Aのポイント
  • Excel VBAのテキストボックスの文字の位置を左中央に表示する方法を教えてください。
  • Excel VBAで作成したテキストボックスの文字の表示位置を左中央にしたいです。
  • 上記コードでテキストボックス内の文字を左中央に表示することは可能でしょうか。他の位置への表示方法も教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

>kagakusuki様からのソースコードではうまく再現できました。しかし私のコード上で応用しようとしてもどうしても中央に表示された文字が移動しません、 とのことですが、私が回答No.2で御伝えしたVBAは、diwk85様が作られた sub sample343() dim temp as shape set temp = worksheets("sheet1").shapes_ .addtextbox(msotextorientationhorizontal_ ,10,20,80,25) temp.textframe.characters.text = "Excel1 VBA" end sub というVBA構文の最後に With temp.TextFrame2 .VerticalAnchor = msoAnchorMiddle .HorizontalAnchor = msoAnchorNone .TextRange.ParagraphFormat.Alignment = msoAlignLeft End With を付け加えただけのものですので、私が提示させて頂いたコードは、オートシェイプ図形内のテキスト文字の文字位置の設定方法をdiwk85様のコードに応用したものなのですから、既に応用自体は完成しております。 >まことに申し訳ありませんが もう一度教えて頂けませんか下記コードが現在のコードです  それは御質問のコードではないではありませんか。  それにそもそもdiwk85様に対しては、以前、diwk85様御自身が投稿された類似の質問において、オートシェイプ図形の文字サイズや文字位置等を始めとする各種設定方法を、290行以上、9000文字以上も要して既にお伝えしております。  それにもかかわらず、今回diwk85様が提示された >下記コードが現在のコード では、以前私が御伝えした方法を無視して、全く異なる方法を使った上で、上手く行かないと仰っておられる訳ですが、それは何故なのでしょうか?  私が御伝えした方法を使わずに、御自身が考えられた方法を使われるのはdiwk85様の御自由ですが、私が御伝えした方法とは異なる方法を勝手に使っておられながら、私が御伝えした方法では応用できなかったなどと仰られても困ります。  ここで設定方法を御教えした処で、diwk85様の方でその方法を無視されるのであれば回答する事に何の意味があるのでしょうか?

diwk85
質問者

お礼

申し訳ありませんでした。 お詫びいたします。せっかくのご指導を無にしてしまい誠に申し訳ありません。 勉強します。 今後ともよろしくお願いいたします。 ありがとうございました。

その他の回答 (2)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

>左中央に寄せて表示できるでしょうか。  次の様にされると良いと思います。 Sub sample343改() Dim temp As Shape Set temp = Worksheets("sheet1").Shapes.AddTextbox(msoTextOrientationHorizontal, 10, 20, 80, 25) temp.TextFrame.Characters.Text = "Excel1 VBA" With temp.TextFrame2 .VerticalAnchor = msoAnchorMiddle .HorizontalAnchor = msoAnchorNone .TextRange.ParagraphFormat.Alignment = msoAlignLeft End With End Sub >もし可能でしたらすみませんがその他の位置への方法も併せ教えて頂けませんか  垂直方向の位置を上にする場合には、 .VerticalAnchor = の右辺の値をmsoAnchorTopにして下さい。(.HorizontalAnchor = msoAnchorNoneもあった方が良い)  同様に下にする場合にはmsoAnchorBottomにして下さい。  横方向の位置を右詰めにする場合には、 .TextRange.ParagraphFormat.Alignment = の右辺の値をmsoAlignRightにして下さい。  同様に左右の中央にする場合には .HorizontalAnchor = msoAnchorNone .TextRange.ParagraphFormat.Alignment = msoAlignLeft の代わりに .TextRange.ParagraphFormat.Alignment = msoAlignCenter として下さい。

diwk85
質問者

お礼

早速のご回答ありがとうございました。 kagakusuki様からのソースコードではうまく再現できました。しかし私のコード上で応用しようとしても どうしても中央に表示された文字が移動しません、まことに申し訳ありませんが もう一度教えて頂けませんか下記コードが現在のコードです、一応中央に文字が表示されます。ただnextの使い方がわかりませんので同じ boxに4回表示されてしまいますが特に支障ありませんのでそのままにしてあります。 青、緑、赤、青の線を4本間隔をあけ描画しています。その開けた間隔の間にtextoboxを表示し左から順に4種類内容の文字を表示しています。目的は前段で描画している線の色の説明のための凡例をつくっています。 多くの方から教えて頂き何とかこの段階まできました。理解しての作業でないため無駄なコードがあるかとおもいますが、実現可能でしょうか。 ---------------------- Dim temp50 As Shape Dim j50, m50, z50 As Long If Worksheets("ダイヤ").Range("u111").Value = 1 Then With Sheets("ダイヤ") For j50 = 138 To 145 Step 2 '回数NEXT For j51 = 148 To 154 Step 2 ' z50 = .Cells(j50, 2).Value '表示位置取得 Set temp50 = Worksheets("ダイヤ").Shapes.AddTextbox(msoTextOrientationHorizontal, z50 + 30, 672, 85, 15) 'TEXTBOX期日内容表示用 temp50.TextFrame.Characters.Text = Worksheets("ダイヤ").Cells(j50 + 10, 2).Value 'BOXに期日内容転記 temp50.TextFrame.Characters.Font.Size = Range("c155").Value’文字サイズ temp50.TextFrame.HorizontalAlignment = xlVAlignCenter '水平方向 temp50.TextFrame.Orientationleft With temp50 .Line.Visible = False '枠線消去 .Fill.Visible = False '透明 End With Next j51 Next j50 End With End If End Sub -------------- よろしくお願いいたします。 ※送信しようとしましたが、For j51 = 148 To 154 Step 2のコードは不要と気がつきましたが、現在動作していますのでそのままにして送信させていただきました。

  • y_shimizu
  • ベストアンサー率41% (27/65)
回答No.1

こうですか? temp.textframe.VerticalAnchor = msoAnchorMiddle temp.textframe.TextRange.ParagraphFormat.Alignment = msoAlignLeft

diwk85
質問者

お礼

ありがとうございました。 おかげ様で解決しました。 ありがとうございました。 今後ともよろしくお願いいたします。

専門家に質問してみよう