こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

Excel VBA で作成したテキストボックスのなかの文字の表示位置を左中央に寄せて表示したいのですが、方法がありましたら教えていただけませんか、お願いいたします。
下記コードを参考に一応目的は達成できましたが、できることなら文字の表示位置をかえたいのですが、現在は中央に表示されています。
-----------------------------
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
-----------------------------
上記コードで左中央に寄せて表示できるでしょうか。もし可能でしたらすみませんがその他の
位置への方法も併せ教えて頂けませんか、
お願いいたします。
環境は,windwos10 Excel 2013です。

投稿日時 - 2015-08-04 11:57:20

QNo.9024151

困ってます

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

>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様の方でその方法を無視されるのであれば回答する事に何の意味があるのでしょうか?

投稿日時 - 2015-08-05 05:04:37

お礼

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

投稿日時 - 2015-08-05 09:25:45

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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

として下さい。

投稿日時 - 2015-08-04 12:47:15

お礼

早速のご回答ありがとうございました。
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のコードは不要と気がつきましたが、現在動作していますのでそのままにして送信させていただきました。

投稿日時 - 2015-08-04 19:47:06

ANo.1

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

投稿日時 - 2015-08-04 12:43:44

お礼

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

投稿日時 - 2015-08-05 15:32:20

あなたにオススメの質問