• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:vba textboxの文字のサイズの変更)

VBA TextBoxの文字のサイズを変更する方法

kagakusukiの回答

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

>textboxの中の文字を大きくしたいのですが との事ですが、そもそも質問者様のVBAではエラーとなってテキストボックスが作成されませんので、作成されない文字のサイズを変える事など出来ません。 set temp = worksheets("ツーリングダイヤ").shapes.addtextbox_(msotextorientstionhorizontal,65,k,65,17) ’駅名表示用BOX の中のmsotextorientstionhorizontalとは何の事なのでしょうか?  もしかしますと、msoTextOrientationHorizontalの間違いではないでしょうか?  又、テキストの縦方向の位置を指定する箇所で、変数kの値が使用されている様ですが、そのkの値を定めている k = .cells(j,+m,3).value’表示位置取得 という箇所の中でセル番号の指定の仕方が、Excelで使用可能な2次元のセル番号ではなく、3次元のセル番号となっているのは何故なのでしょうか?  もしかしますと、未だ私が気付いていないバグが他にもあるかも知れません。  これではVBAが動作致しません。  後、別に間違いという訳では御座いませんが、 .line.visible = falue’透明 .fill.visible = falue の2行は with temp の中に入れ子としているというのに、その直前の temp.textframe.characters.text = worksheets("ツーリングダイヤ").cells(j,2).value’駅名転記 の行は、何故、態々 with temp の中に入れずにおいておられるのでしょうか?  それでそういったバグをどう直せば良いのかは後回しにして、とりあえず御質問の >textboxの中の文字を大きくしたい という事についてのみお伝えする事に致します。  文字サイズは [テキストボックスオブジェクト].TextFrame.Characters.Characters.Font.Size = [フォントサイズ] で設定されますから、もしShape変数tempで規定されているテキストボックスのフォントサイズを20に設定する場合には、 temp.TextFrame.Characters.Characters.Font.Size = 20 という構文を付け加えれば良い訳です。  そして temp.TextFrame.Characters.Characters の所までは temp.textframe.characters.text = worksheets("ツーリングダイヤ").cells(j,2).value’駅名転記 の行と共通なのですから、 temp.textframe.characters.text = worksheets("ツーリングダイヤ").cells(j,2).value’駅名転記 with temp .line.visible = falue’透明 .fill.visible = falue end with の部分を with temp with .textframe.characters .text = worksheets("ツーリングダイヤ").cells(j,2).value’駅名転記 .Font.Size = 20 end with .line.visible = falue’透明 .fill.visible = falue end with に変えれば良い訳です。

diwk85
質問者

お礼

早速のご解答ありがとう御座います。 いろいろと不備なコードでの質問をいたしましてご迷惑をおかけしました。申し訳ありません。 「バグを直せば良いのかは後回しにしてとりあえず・・・・・」と言っていただきましたので、早速次のように、コードを追加してみましたが解決できませんでした。致命的な間違いをしているようです。原因が判明しません、すみませんもう一度、教えて頂けませんか。今回は、動作しているコードをコピーしました。(その中に今回のコードを追加してあります。) ------------------------------- '------------駅名・キロ程転記・描画 -------- Dim temp As Shape Dim j, m, k, t As Long With Sheets("ツーリングダイヤ") t = .Range("c110").Value For j = 104 To t Step 1 '駅数の数NEXT m = .Range("e99").varue '表示位置調整 k = .Cells(j + m, 3).Value '表示位置取得 Set temp = Worksheets("ツーリングダイヤ").Shapes.AddTextbox(msoTextOrientationHorizontal, 65, k, 65, 17) 'TEXTBOX駅名表示用 temp.TextFrame.Characters.text = Worksheets("ツーリングダイヤ").Cells(j, 2).Value 'BOXに駅名転記 temp.TextFrame.Characters.Characters.Font.Size = 20 With temp .line.Visible = False .Fill.Visible = False End With Next j End With ----------------------------- よろしくお願いいたします。

関連するQ&A

  • excel vba でtextboxの色、線を消す

    excel VBA の中でtext boxを作成しその中に文字を転記します。その際中の文字だけを表示し塗りつぶしなし、,線なしにしたいのですが何か方法はありませんか。手動で、図形書式の設定の、塗りつぶしなし,線なし、にすればできますが、次に作成するともとに戻ってしまいます。 コードは、下記のコードです。 dim temp as shape t = worksheets("ダイヤ").range("q93").value for j = 73 to t step 1'駅数の数NEXT m = worksheets("ダイヤ").range("f110").value’表示位置調整 k = worksheets("ダイヤ").cells(j + m.17).value’表示位置取得 set temp = worksheets("ダイ ヤ ").shapes.addtextboxmsotextorientationhorizontal.32,k,65,17)’textbox作成 temp. textframe.characters.text = worksheets("ダイヤ").cells(j,15).value、駅名転記 next j このコードで現在textboxを作成その中に文字を転記できますが、ボックスも表示されされてしまいま す、ボックスは消し、文字だけ表示することはできませんか。 何方か教えて頂けませんか。

  • excel VBA で条件の設定方を教えて下さい。

    今、斜線を引きその斜線データの最初のセルに数値で(1とか3とかの数値の)条件をつけて置き、その条件で、太さ、色等を変えて斜線を引きたいのですがうまくいきません。何方か教えて頂けませんか。 --------------------- dim myrange as range workheets("補助計算").range("c8:c47").value = worksheets("時刻").range("c8:c47").value workheets("補助計算").range("g8:h47").value = worksheets("時刻").range("g8:h47").value with worksheets("時刻")     v=worksheets("時刻").range("m2").value+12'描画本数     for i = 12 to v step 1'設定可能本数50本 set myrage = worksheets("補助計算").range("t3:t47") myrange.value = .range(.cells(3,i),.cells(48,i)).value for cnt = 75 to 113 step 2 e = worksheets("ダイヤ").cells(cnt,10).value       f = worksheets("ダイヤ").cells(cnt,11).value       g = worksheets("ダイヤ").cells(cnt+1,10).value       h = worksheets("ダイヤ").cells(cnt+1,11).value with worksheets("ダイヤ").shapes.addline(e,f,g,h) .line.weight = 1.1 .line.forecolor.rgb = vbblue end with next cnt next i end with ----------------------- 上記コードで、斜線が何本か引かれます、その際、データ元のセルに数値の条件、例えば、1 とか3とかの数値を入力されているときは、それによって、斜線の色、又は線の太さをかえたいのですが、指定の仕方は、時刻シートの時刻の上欄セルに、線の指定のセル、太さ指定のセルに別々に指定おき、それを参照して、線の色、太さをかえたいのですが、いろいろ試みましたがうまくいきません。上記コードにどのように追加コードをすればよいか何方か教えていただけませんか。できれば、線の色は3色以上設定できればありがたいです。、

  • EXCEL VBA SetFocus について教え

    ComboBox3 で郵便番号 住所 を選択して TextBox8 に表示 その後番地等を記入するため Private Sub ComboBox3_AfterUpdate() '郵便番号 住所 Workbooks("*****.xls").Activate Worksheets("**").Activate With UserForm7 No = .TextBox1.Value .TextBox7.Value = Mid(.ComboBox3.Text, 1, 8) Cells(No + 1, 7).Value = Mid(.ComboBox3.Text, 1, 8) '郵便番号 .TextBox8.Value = Mid(.ComboBox3.Text, 10) '住所 Cells(No + 1, 8).Value = .TextBox8.Value .ComboBox3.Visible = False .TextBox8.SetFocus .TextBox8.TabIndex = 4 .TextBox8.Text = Mid(.TextBox8.Text, 1) End With End Sub 上のコードで TextBox8 の テキストの最後にカーソルを移動したいのですが TextBox8 に カーソルは現れません。(UserForm7の最初のTextBox1にフォーカスが移る) UserForm8 にも 同様なコードが有りますがこちらは期待どうり動作します。 タブオーダーとかの違いは有りますが関係するのでしょうか  よろしくお願いします。

  • VBAのフォームでTextBoxがいっぱいある時

    Microsoft Excel 2000 for VBAのフォーム機能を使用して TextBox?に値が入力したらシートの指定したセルへ値が入るようにしたいんですが、 TextBoxがいっぱいあるため、以下のように非常に長いプログラムになってしまいました。 Private Sub TextBox1_Change() Sheets(sheetname).Cells(1, 横位置).Value = TextBox1.Value End Sub TextBox2~29は繰り返し Private Sub TextBox30_Change() Sheets(sheetname).Cells(30, 横位置).Value = TextBox30.Value End Sub 上手く配列化なんかでまとめる方法がありましたらアドバイスください。

  • TextBox.2 に Vlookupを入れる記述を教えて下さい。

    VBA初心者です。見よう見真似で売上伝票を作っています。 TextBox1には入力したコードをSheet2B1に書き込みたいです。 TextBox2にはTextBox1に入力したコードを見てVlookupのように、 商品リストから参照し、TextBox2に反映させたいです。 自分で作成してみたのですが、全く動きませんでした。 是非教えて下さい。宜しくお願い致します。 Private Sub CommandButton1_Click() With Worksheets("Sheet2") .Range("B1") = TextBox1.Text End With With Worksheets("商品リスト") TextBox2.Text = Application.WorksheetFunction.VLookup(Val(TextBox1.Value), RangeA, 2, False) End With End Sub

  • VBA ステートメントをまとめたい

    OSはXP Excelは2003を使用しています。 下記は組んだマクロの一部ですが、 ComboBoxが20まであるので、大変長いステートメントになってしまうので、 withの中を何とかまとめられないかと思い、こちらで教えて頂きたく書き込みました。 説明不足のところは追記致しますので、 何卒、よろしくお願い致します。 With ws 'Cells(行,列)  If ComboBox1 <> "" Then Cells(i + 1, 1) = TextBox1.Value '日付 Cells(i + 1, 2) = TextBox2.Value '伝票No. Cells(i + 1, 24) = TextBox3.Value '郵便番号 Cells(i + 1, 25) = TextBox4.Value '住所 Cells(i + 1, 3) = TextBox5.Value '社名 Cells(i + 1, 4) = TextBox6.Value '担当者名 Cells(i + 1, 18) = TextBox601.Value '税抜合計 Cells(i + 1, 19) = TextBox602.Value '消費税 Cells(i + 1, 20) = TextBox603.Value '合計 Cells(i + 1, 22) = TextBox701.Value '備考 Cells(i + 1, 23) = TextBox702.Value '未定 '------------------------------------------------------ Cells(i + 1, 6) = ComboBox1.Value '商品コード Cells(i + 1, 7) = TextBox11.Value 'メーカー名 Cells(i + 1, 8) = TextBox12.Value 'ModelNo. Cells(i + 1, 9) = TextBox13.Value '品名(英 Cells(i + 1, 10) = TextBox14.Value '品名(日 Cells(i + 1, 11) = TextBox15.Value '仕上(英 Cells(i + 1, 12) = TextBox16.Value '仕上(日 Cells(i + 1, 13) = TextBox17.Value '単価 Cells(i + 1, 14) = TextBox18.Value '掛け率 Cells(i + 1, 15) = TextBox19.Value '売価 Cells(i + 1, 16) = TextBox20.Value '数量 Cells(i + 1, 17) = TextBox21.Value '小計 Cells(i + 1, 21) = TextBox22.Value '社内コメント '---------------------------------------------------- '---------------------------------------------------- If ComboBox2 <> "" Then Cells(i + 2, 1) = TextBox1.Value '日付 Cells(i + 2, 2) = TextBox2.Value '伝票No. Cells(i + 2, 24) = TextBox3.Value '郵便番号 Cells(i + 2, 25) = TextBox4.Value '住所 Cells(i + 2, 3) = TextBox5.Value '社名 Cells(i + 2, 4) = TextBox6.Value '担当者名 Cells(i + 2, 18) = TextBox601.Value '税抜合計 Cells(i + 2, 19) = TextBox602.Value '消費税 Cells(i + 2, 20) = TextBox603.Value '合計 Cells(i + 2, 22) = TextBox701.Value '備考 Cells(i + 2, 23) = TextBox702.Value '未定 '------------------------------------------------------ Cells(i + 2, 6) = ComboBox2.Value '商品コード Cells(i + 2, 7) = TextBox31.Value 'メーカー名 Cells(i + 2, 8) = TextBox32.Value 'ModelNo. Cells(i + 2, 9) = TextBox33.Value '品名(英 Cells(i + 2, 10) = TextBox34.Value '品名(日 Cells(i + 2, 11) = TextBox35.Value '仕上(英 Cells(i + 2, 12) = TextBox36.Value '仕上(日 Cells(i + 2, 13) = TextBox37.Value '単価 Cells(i + 2, 14) = TextBox38.Value '掛け率 Cells(i + 2, 15) = TextBox39.Value '売価 Cells(i + 2, 16) = TextBox40.Value '数量 Cells(i + 2, 17) = TextBox41.Value '小計 Cells(i + 2, 21) = TextBox42.Value '社内コメント End If End If

  • このVBA、もうちょっとシンプルにできないですか?

    自力でVBAを書いてみたのですが、長くなってしまいました。 もうちょっとシンプルにするアイディアがあればお願いします。 やりたいことは、 (1)ユーザーフォームのテキストボックス内が空欄だったら「無視」 (2)テキストボックスの中が空欄でなければ「書き込み」 以上のことをやりたいのですが、テキストボックスが6種類あるので単純に記述すると結構長くなってしまいました。 特に問題がなければ、その旨をお願いします。 If TextBox1 = "" Then If TextBox2 = "" Then If TextBox3 = "" Then If TextBox4 = "" Then If TextBox5 = "" Then If TextBox6 = "" Then MsgBox ("得点が入力されていません。") ElseIf TextBox6 <> "" Then Sheets("総合(得点)").Cells(t + 9, u) = TextBox6.Value End If ElseIf TextBox5 <> "" Then Sheets("総合(得点)").Cells(t + 8, u) = TextBox5.Value ElseIf TextBox6 <> "" Then Sheets("総合(得点)").Cells(t + 9, u) = TextBox6.Value End If End If ElseIf TextBox4 <> "" Then Sheets("総合(得点)").Cells(t + 7, u) = TextBox4.Value If TextBox5 <> "" Then Sheets("総合(得点)").Cells(t + 8, u) = TextBox5.Value If TextBox6 <> "" Then Sheets("総合(得点)").Cells(t + 9, u) = TextBox6.Value End If End If End If ElseIf TextBox3 <> "" Then Sheets("総合(得点)").Cells(t + 6, u) = TextBox3.Value If TextBox4 <> "" Then Sheets("総合(得点)").Cells(t + 7, u) = TextBox4.Value If TextBox5 <> "" Then Sheets("総合(得点)").Cells(t + 8, u) = TextBox5.Value If TextBox6 <> "" Then Sheets("総合(得点)").Cells(t + 9, u) = TextBox6.Value End If End If End If End If ElseIf TextBox2 <> "" Then Sheets("総合(得点)").Cells(t + 5, u) = TextBox2.Value If TextBox3 <> "" Then Sheets("総合(得点)").Cells(t + 6, u) = TextBox3.Value If TextBox4 <> "" Then Sheets("総合(得点)").Cells(t + 7, u) = TextBox4.Value If TextBox5 <> "" Then Sheets("総合(得点)").Cells(t + 8, u) = TextBox5.Value ・ ・ ・ こんな感じで規則的に記述しただけです。(文字数が多いので最後は省略しました) 段差がなくて見づらいですが、宜しくお願いします。

  • VBA  コードをスマートに

    下記のコードをスマートにしたいのですが どのようにすれば いいですか? アドバイスをお願いします。 Worksheets("20年5月").Cells(2, 6).Value = Worksheets("20年4月").Cells(i, 6).Value Worksheets("20年6月").Cells(2, 6).Value = Worksheets("20年5月").Cells(i, 6).Value Worksheets("20年7月").Cells(2, 6).Value = Worksheets("20年6月").Cells(i, 6).Value Worksheets("20年8月").Cells(2, 6).Value = Worksheets("20年7月").Cells(i, 6).Value Worksheets("20年9月").Cells(2, 6).Value = Worksheets("20年8月").Cells(i, 6).Value Worksheets("20年10月").Cells(2, 6).Value = Worksheets("20年9月").Cells(i, 6).Value Worksheets("20年11月").Cells(2, 6).Value = Worksheets("20年10月").Cells(i, 6).Value Worksheets("20年12月").Cells(2, 6).Value = Worksheets("20年11月").Cells(i, 6).Value Worksheets("21年1月").Cells(2, 6).Value = Worksheets("20年12月").Cells(i, 6).Value Worksheets("21年2月").Cells(2, 6).Value = Worksheets("21年1月").Cells(i, 6).Value Worksheets("21年3月").Cells(2, 6).Value = Worksheets("21年2月").Cells(i, 6).Value

  • ユーザーフォームをWorksheet上で表示

    数日前、このカテゴリで相談した事の続きです。 以前の相談は、次の通りです。 http://okwave.jp/qa/q8892460.html この相談の中で出来たことは 1 ユーザーフォームを保存終了 2 Worksheet上にボタンを作成、そのボタンをクリックでユーザーフォームを表示 以上のことはできました。 作成したコードは次のとおりです。   '// Private Sub UserForm_Initialize() With Worksheets("Sheet1")  TextBox1 = .Cells(1, 1).Value  TextBox2 = .Cells(2, 1).Value TextBox3 = .Cells(3, 1).Value TextBox4 = .Cells(4, 1).Value TextBox5 = .Cells(5, 1).Value ).Value End With End Sub Private Sub UserForm_Terminate() With Worksheets("Sheet1")  .Cells(1, 1).Value = TextBox1  .Cells(2, 1).Value = TextBox2 .Cells(3, 1).Value = TextBox3 .Cells(4, 1).Value = TextBox4 .Cells(5, 1).Value = TextBox5 End With End Sub '// Private Sub cmdsyuuryo_Click() Unload Me End Sub Private Sub UserForm_Click() Myform.Show vbModeless End Sub そこで質問です。 現在Worksheet上にボタンを作成、クリックしてユーザーフォームを表示しているの を、WorksheetのセルA1(名前を記述してある)をクリックするだけでユーザーフォー ムを表示する方法はありませんか? ユーザーフォームの保存先は「Sheet1」のA1からA5までです。 できれば、この設定で具体的なコードの記述をお願いします。 Excel2013です。 よろしくお願いします。

  • vba変数のファイル名

    Cells(2, 3)にjを変数として、j.txtと書きたいのですが上手くいきません。 わかる方教えてください。 コードは以下のようになっています。よろしくお願いします。 Dim j As Integer For j = 1 To 8760 a = ThisWorkbook.Worksheets("Sheet2").Cells(j, "A").Value Worksheets("Sheet1").Range("1:26").Insert Worksheets("Sheet1").Cells(1, 1) = "void brightdata sky_dist" Worksheets("Sheet1").Cells(2, 1) = 7 Worksheets("Sheet1").Cells(2, 2) = "corr" Worksheets("Sheet1").Cells(2, 3) = " & j & ".txt” Next j