リッチテキストボックス内のフォント変更

このQ&Aのポイント
  • VB.NETプログラミングにおいて、リッチテキストボックス内でのフォント変更ができない問題についてご教示ください。
  • RichTextBoxを使ったテキストエディタで、選択されている文字のフォント変更(例えばボールド体やイタリック体、下線付加)ができません。
  • ワードのような機能をリッチテキストボックスに付加したいですが、うまくいきません。選択されている文字をボールド体にして、ボールド体の部分は非ボールド体にする方法をご存知の方、ご教示ください。
回答を見る
  • ベストアンサー

リッチテキストボックス内のフォント変更

VB.NETプログラミングしています。 基礎的なことだと思うのですが、 調べてもわかりませんのでご教示ください。 RichTextBoxを使ってテキストエディタを作っています。 このリッチテキストボックス内でキーダウンイベントを発生させ、 選択されている文字のフォント変更(例えばボールド体やイタリック体、下線付加)したいのですができません。 ワードのような機能を付加したいだけなのですが、うまくいきません。 つまり、 If e.Control = True Then  With RichTextBox1   Select Case e.KeyCode     Case Keys.B   (選択されている文字をボールド体にして、    ボールド体の部分は非ボールド体にする) End Select End With EndIf の中の 「選択されている文字をボールド体にして、ボールド体の部分は非ボールド体にする」という処理ができません。 ご存知の方、ご教示ください。

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

  • ベストアンサー
  • mo_gu
  • ベストアンサー率51% (56/109)
回答No.1

これでできませんか? ' Visual Basic RichTextBox1.SelectionFont = New Font("Tahoma", 12, FontStyle.Bold) RichTextBox1.SelectionColor = System.Drawing.Color.Red

nobunorinobu
質問者

お礼

回答ありがとうございます。 お礼遅れました。 これでできました。 ありがとうございます。

関連するQ&A

  • C# リッチテキストボックスの文字色

    richTextBox_pro.Text = "aaaaaaaaaaaaaaaaaaaaaaaa"; richTextBox_pro.Text += "end"; richTextBox_pro.Select(richTextBox_pro.TextLength - 3, 3); richTextBox_pro.SelectionColor = Color.Black; のようにして、最後に付け加えた end の文字だけ色をかえているのですが、 選択された状態になってしまいます。 マウスでドラックしている状態です。 これを解除した状態で文字色をかえるにはどうしたらいいのでしょうか。

  • テキストボックスの色変更

    自動でテクストボックスの色変更をしたいのですが、 前回こちらにて質問をさせていただき大変助かったのですが、 さらに、問題に突き当たりました。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("R8: S341 ")) Is Nothing Then Exit Sub If Cells(Target.Row, "R").Value < -10 Then c = 10 Else Select Case Cells(Target.Row, "S").Value Case Is > -89 c = 17 Case Is < -100 c = 10 Case Else c = 12 End Select End If With Sheets("sheets2").Shapes("テキスト " & Target.Row) .Line.ForeColor.SchemeColor = c .TextFrame.Characters.Font.ColorIndex = c - 7 End With End Sub にて、色と文字色の変更はできたのですが、 R列、S列を関数で読み込んでくると自動では変わりません。 手動で打ち込むと変わるのですが 一緒に文字サイズの指定もできるのでしょうか? 宜しくお願いいたします。

  • TextとValueの違い?

    Access2010です。 フォームに有る数値入力のためのテキストボックスのKeyDownイベントに、入力後の値がゼロかNullか空白なら再入力させるようにコードを記述しましたがこれでは「型が一致しません」のエラーになります。 -----KeyDownイベントの内容 ここから----- Select Case Keycode Case 13 If IsNull(Me.数量.Text) Or Me.数量.Text = "" Or Me.数量.Text = 0 Then MsgBox ("数量が不正です"), vbCritical Keycode = 0 End If End Select -----KeyDownイベントの内容 ここまで----- でも、Exitイベントに同じような内容を記述した場合は希望通りの動きをします。 ※上記コードからSelectとKeycode=0を外し、TextをValueに変更。 私が何かを理解できていないのだと思いますが、何が違うのでしょう?

  • テキストボックスにVBA

    excelのシートにスキャナで取り込んだ画像を貼り付け、その画像の上にさらに、いくつかのテキストボックスを貼り付けて文字を入力して使っております。 そこで、その中の一つのテキストボックスを、クリックするたびに(MS明朝でサイズ14の)○を表示したり消したり出来る様にしたいのです。 VBAを使うのかと思い、マクロの自動記録で挑戦してみましたが Sub テキスト1_Click() ActiveSheet.Shapes("Text Box 1").Select Selection.Characters.Text = "○" With Selection.Characters(Start:=1, Length:=1).Font .Name = "MS 明朝" .FontStyle = "標準" .Size = 14 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With End Sub となって、クリックで○は付けられますが、当然、更にクリックして消すという動きにはなりません。 ネットで拾ってきた、 If .Value = "○" Then   .Value = ""  Else   .Value = "○"  End If や、 Select Case Target.Value Case "": Target.Value = "○" Case "○": Target.Value = "" End Select なんてのを書き込んでみたりしたのですが、全く動きません。 もっとも今まで全くVBAをやった事がなかったので、よく意味もルールも分からないままの作業でしたので当然の結果でした。 VBAに興味が出てきましたので、更に勉強はしてみたいと思っておりますが、今現在の私には無理と判断いたしました。 どなたか、よろしくお願いいたします。

  • リッチテキストの SelectionFont プロパティ(VB.NET)

    リッチテキストで選択された範囲を太字や斜体等に変換させたく RichTextBox1.SelectionFont = _ New Font(RichTextBox1.SelectionFont, RichTextBox1.SelectionFont.Style Or FontStyle.Bold) このようにした場合、選択文字に複数のフォント?が含まれてると System.NullReferenceException はハンドルされませんでした。 オブジェクト参照がオブジェクト インスタンスに設定されていません。 となってしまいます。 SelectionFont プロパティが Nothing を返してくるようで… 仕方なく以下のようにして1文字づつ変換しているのですが With RichTextBox1 For i As Integer = .SelectionStart To .SelectionStart + .SelectionLength - 1 .SelectionStart = i .SelectionLength = 1 .SelectionFont = New Font(.SelectionFont, .SelectionFont.Style Or FontStyle.Bold) Next End With 他にうまく変換させる方法はないでしょうか?

  • Select Case文についてご教授お願いします。

    助けて下さい。Select Case文についてご教授お願いします。現在VB2008にてプログラムを作成しているのですが、どうにも煮詰まってしまいました。 作成内容は、Excelの任意のSheetから文字をVB上のTextBox1~50に呼び出し、その内いくつかをCheckBoxとButtonを使用してRichTextBox1に表示させると共に、TextBox51に入力した文字をExcelから呼び出した任意の文字に対応したセルへ保存というものです。Excelからの呼び出しにIf文を使用しているため、同一プロシージャ内で別のIf文を使用してしまうと、先のIf文で決めた変数が反映されないためSelect Case文を使用して保存をさせようとしているのですが上手くいきません。以下に現在のコードを記載しますのでよろしくお願いいたします。 Private Sub Button1_Click~ Excel取得コード If RadioButton1.Checked = True AndAlso RadioButton13.Checked = True Then 'Sheetと列を選択 tuki = CType(Book.Worksheets.Item(2), Microsoft.Office.Interop.Excel.Worksheet) 'Sheet情報 COLUMN1 = "B" '列1情報 COLUMN2 = "F" '列2情報 ・ ・ ・ End If 'ここから先は指定したTextBoxをRichTextBoxに表示(先のIf文内の変数は未使用) RichTextBox1.Clear() If Me.CheckBox1.Checked = True Then RichTextBox1.Text = TextBox1.Text End If If Me.CheckBox2.Checked = True ThenIf RichTextBox1.Text <> "" Then RichTextBox1.Text = RichTextBox1.Text & "・" End If RichTextBox1.Text = RichTextBox1.Text & TextBox2.Text End If ・ ・ ・ End If 'ここから保存指示=エラー箇所 Select Case tuki.Range(COLUMN1 & "3").Value Case RichTextBox1.text = tuki.Range(COLUMN1 & "3").Value tuki.Range(COLUMN2 & "3").Value = TextBox51.Text Book.Save() という感じで作成しているのですが「String "" から型 'Boolean' への変換は無効です」と表示されます。 他のケースではIf文の変数をSelect Caseに対応できたので、この方法を選択しました。 基本的にSelect Caseの使い方が誤っていると思うのですが解決策が見つかりませんでした。 他の方法も含めて、良い案がありましたらご教授お願いいたします。 長文申し訳ありません。

  • VB2008、文字色について教えて下さい

    VB2008を使用しています。 現在、Form内複数あるTextBox内の文字をいくつか選択し、RichTextBox内に"・"で区切って代入するプログラムを作成しています。 その際、RichTextBox内に代入されたTextBoxの文字色を赤色に変える(元は黒色です)コードを下記のように作成しました。 Dim strList() As String strList = RichTextBox1.Text.Split("・"c) For Each strMoji As String In strList Select Case strMoji Case TextBox1.Text TextBox1.ForeColor = Color.Red Case TextBox2.Text TextBox2.ForeColor = Color.Red End Select Next 上記コードは問題ないのですが、RichTextBox内に一度代入された複数のTextBoxの文字から、いくつかを選択して削除した際、選択したTextBoxの文字を元の黒色に戻す方法がわかりません。単純に全てのTextBoxの文字色を黒色に戻すコードを書いてしまうと、同様の操作を他のRichTextBoxに適用した場合、そちらに代入された文字色も黒色に戻ってしまいます。上記のコードを応用すれば出来そうなのですが、良い方法はないでしょうか?上記コード3行目の「In」を「Out」や「Cut」に変更しても構文エラーになってしまいました。

  • Word VBA テキストボックスのフォントサイズ

    Wordでマクロを組んでいます。 文書内から取得した値を変数へ格納し、複数の変数をつないでテキストボックスに入れ、文書へ追加しています。 このテキストボックスの文字のフォントサイズを前と後ろで変えたいのですが、色々試していますがうまくいきません。 お分かりになる方がいらっしゃいましたら教えてください! 以下コードです。 下記の「EIJI」のみフォントサイズを20ptにしたいのです。 変数に格納する文字列は都度変化し、文字数も変わります。 よろしくお願いします! Sub try() Dim KANA As String, KATAKANA As String, EIJI As String KANA = "あああ" KATAKANA = "アアア" EIJI = "AAA" Dim myTxt As String myTxt = KANA & "/" & KATAKANA & "/" & EIJI Dim objTextBox As Object Set objTextBox = ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, 25, 20, 530, 25) objTextBox.Select With Selection .Font.Size = 16 .TypeText Text:=myTxt End With End Sub

  • VBA データフォーム テキストBOX内容の表示

    VBA データフォーム テキストBOXの内容が旨く表示出来なくて困っています。  お世話になります。  データフォームを使って、シートの修正マクロを作成してます。 フォームにはコードと選択項目の2つのテキストBOXが有り、該当行の修正をしてOKボタンを クリックすると、修正したコードと選択項目はシートに反映されるのですが、以降の行の修正で テキストBOXの表示が1件目のまま変わりません。  行が変わった時に、該当行の内容(コード、選択項目)を表示させる様にしたいのです。 以下VBAのコーディングです。宜しくお願いします。 Dim setIn As Range Dim cnt_A As Long Private Sub CommandButton1_Click() '各項目の入力 Set setIn = ActiveCell.Offset(0, 0) Select Case データ入力.Caption Case Is = "コード 入 力" cnt_A = cnt_A + 1 'フォームにコードをセット With setIn(cnt_A) .Value = Sample_No .Offset(0, 0).Value = Sample_No End With Case Is = "A 入 力" cnt_A = cnt_A + 1 'フォームに項目Aをセット With setIn(cnt_A) '.Value = Sample_No .Offset(0, 1).Value = Sentaku_Koumoku End With Case Is = "B 入 力" cnt_A = cnt_A + 1 'フォームに選択項目Bをセット With setIn(cnt_A) '.Value = Sample_No .Offset(0, 2).Value = Sentaku_Koumoku End With End Select End Sub

  • エクセルVBAでテキストボックスに文字

    Excel2016です。 ワークシート上に配置した、図形の「テキストボックス」に文字を入れるVBAについての質問です。 下記のTEST01では期待通り文字が入りますが、これはテキストボックスをSelectしなければなりません。 TEST02ならSelectせずにOKかと思ったら実行時エラーとなりました。 どのように修正したらよろしいのでしょうか? Sub TEST01()   Sheets(“Sheet1”).Shapes.Range(Array("TextBox 3")).Select   Selection.ShapeRange.TextFrame2.TextRange.Characters.Text = "TEST/TEST/2020"   Selection.ShapeRange.TextFrame2.TextRange.Font.Name = "Meiryo UI"   Selection.ShapeRange.TextFrame2.TextRange.Font.Bold = msoTrue End Sub Sub TEST02()   With Sheets(“Sheet1”).Shapes.Range(Array("TextBox 3"))     .ShapeRange.TextFrame2.TextRange.Characters.Text = "TEST/TEST/2020"     .ShapeRange.TextFrame2.TextRange.Font.Name = "Meiryo UI"     .ShapeRange.TextFrame2.TextRange.Font.Bold = msoTrue   End With End Sub

専門家に質問してみよう