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

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

kagakusukiの回答

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

 回答No.5で書き切れなかったVBAマクロの構文の続きです。 '表示位置調整用データの取得及び確認 m = .Range(AdjustCell).Value '表示位置調整用データ If Not IsNumeric(m) Then GoTo label2 If m <> Int(m) Then GoTo label2 Set StName = .Range(NameCell).Resize(t, 1) myOffsetC = .Columns(PositColumn).Column - StName.Column '↑表示位置が入力されているセルと駅名が入力されているセルとの列の差 'Textboxの作成位置として無効なものが存在するかどうかを確認し、もし存在すればピックアップして表示 NoDataStation = "" For Each c In StName '駅数の数NEXT If c.Value = "" Then GoTo label3 k = c.Offset(m, myOffsetC).Value '表示位置取得 If k <> "" And IsNumeric(k) And k >= 0 Then GoTo label3 NoDataStation = NoDataStation & Chr(13) & Left(c.Value & String(19, " "), 19) _ & c.Offset(m, myOffsetC).Address(RowAbsolute:=False, ColumnAbsolute:=False) & " = """ & k & """" label3: Next c If NoDataStation <> "" Then myMsg = MsgBox("以下の駅には位置情報として有効なデータが存在しません。" & Chr(13) & Chr(13) & _ NoDataStation & Chr(13) & Chr(13) & _ "Textboxの作成の際にはこれらの駅は無視して" & Chr(13) & "他の駅のTextboxのみを作成しますか?" _ & Chr(13) & Chr(13) & "[はい] : 有効な位置データが存在する駅のみTextboxを作成します" & Chr(13) _ & "[いいえ] : マクロを終了します", vbExclamation + vbYesNo + vbDefaultButton2, "無効なデータ") If myMsg <> vbYes Then MsgBox "マクロを終了します。", vbInformation, "マクロの終了" Exit Sub End If End If 'Textboxの作成及び属性調整 For Each c In StName '駅数の数NEXT If c.Value = "" Then GoTo label4 k = c.Offset(m, myOffsetC).Value '表示位置取得 If Not IsNumeric(k) Then GoTo label4 If k < 0 Or k = "" Then GoTo label4 Set temp = Sheets(mySheet).Shapes.AddTextbox(msoTextOrientationHorizontal, 65, k, 0, 0) 'テキストボックス作成 With temp With .TextFrame 'テキストを図形からはみ出して表示する .HorizontalOverflow = 0 .VerticalOverflow = 0 .Characters.Text = c.Value '図形内のテキストに駅名を入力 End With With .TextFrame2 With .TextRange .ParagraphFormat.Alignment = msoAlignCenter '図形内のテキストの水平方向の配置=中央揃え With .Font .Size = 10.5 '図形内のテキストのフォントサイズを10.5ptに設定 .NameFarEast = "MS Pゴシック" '図形内のテキストのフォントを"MS Pゴシック"にする .Fill.ForeColor.RGB = RGB(255, 0, 0) '文字色を赤に設定 '※黒:RGB( 0, 0, 0)、白:RGB( 255, 255, 255)、緑:RGB( 0, 255, 0)、青:RGB( 0, 0, 255)、 '黄:RGB( 255, 255, 0)、紫:RGB( 255, 0, 255)、橙:RGB( 0, 255, 255) .NameFarEast = "MS Pゴシック" '図形内のテキストのフォントを"MS Pゴシック"にする End With End With .VerticalAnchor = msoAnchorMiddle '図形内のテキストの垂直方向の配置=上下中央 'テキストに合わせて図形のサイズを調整する(必ず折り返し無しと共に使用) .WordWrap = False '図形内でテキストを折り返さない .AutoSize = 1 'テキストに合わせて図形のサイズを調整する End With .Line.Visible = False '線なし .Fill.Visible = False '塗りつぶしなし End With label4: Next c End With GoTo labelE label1: '駅の数のデータが無効なデータであった場合 MsgBox mySheet & "!" & NumStCell & "セルに入力されている値" _ & Chr(13) & Chr(13) & t & Chr(13) & Chr(13) _ & "では駅の数として使う事が出来ません。" & Chr(13) _ & "マクロを終了します。", vbExclamation, "無効な値" GoTo labelE label2: 'テキストボックスの表示位置調整のデータが無効なデータであった場合 MsgBox mySheet & "!" & AdjustCell & "セルに入力されている値" _ & Chr(13) & Chr(13) & m & Chr(13) & Chr(13) _ & "ではテキストボックスの表示位置調整の値として使う事が出来ません。" _ & Chr(13) & "マクロを終了します。", vbExclamation, "無効な値" GoTo labelE labelE: End Sub  以上です。

diwk85
質問者

お礼

ありがとう御座います。 今,受信を確認しました。こんなにも詳しく教えて頂きほんとにありがとうございます。 ご迷惑おかけしました。早速勉強したいと思います。 改めて、本当に、本当にありがとうございました。感謝いたします。 今後ともよろしくお願いいたします。

関連する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