• ベストアンサー

【EXCEL2010 VBA】 部分的書式設定

初心者ながら医療業務用マクロを作っています。 テキストボックス内の1行目のみ取消線を解除する方法を教えてください。 UserForm1.TextBox12.Lines(1).Font.Strikethrough = False これではさすがにエラーが出ました; 何卒よろしくお願いします。

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

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.3

こんにちは。お邪魔します。 MSForms.TextBoxには、 フォント設定を部分的に変更する機能は用意されていません。 無論、テキストの一部を行として指定することも出来ません。 なので、代替え案を検討された方がいいです。 #私が実際にテストしていたのもend-uさんと同趣旨のものだったりしたのですが  直接の回答としてはNo.1のご回答で十分だと思います。 私が気になったのは、  実際にやりたいこと、 と、  TextBoxの扱いを含めた全体の設計 が  目的に合ったものになっているか、 ということです。 # TextBox で改行しながら手入力って個人的に違和感があるもので、、、。 ご提示のコードに出てくる TextBox12 というのは、 ■手作業での入力(編集)に用いているものなのでしょうか?■ もしも、 ■ただ単に表示させる目的だけでTextBox12を用いているなら■ 目的に合ったツール選びが出来ていないのかも知れません。 また、 ■取り消し線でなければいけないのでしょうか?■ ■"1行目"にあたるテキストの一部だけを他とは差別して表示する■ ということで足りるとか? 例えば、表示だけが必要で手入力はしないのなら、 WebBrowserコントロールを使う方法が妥当に思います。 加えて、取り消し線である必要がないなら、 ListBoxコントロール(.ListStyle=1)を使うのが簡便でしょう。 手入力をするのなら、必要な項目(行)の数だけ TextBox を 縦に隣接させて並べるのが現実的だと思います。 #一昔前ならRichTextBoxコントロールとか Office Web Components SpreadSheetとかで容易に解決できたのですが、 現在は使えないようですので。     ご自身で目的を明確にして設計を見直すことから、あらためてチャレンジしてみてください。

usny-stk
質問者

お礼

ありがとうございました

usny-stk
質問者

補足

アドバイスを参考に、テキストボックスの上にテキストラベルを配置することで解決しました。丁寧に説明していただきありがとうございました。

その他の回答 (2)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

よろしくお願いしますと言われても。-"- >MSForms.TextBoxでは無理ですね。 >そういったプロパティがない。

  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

MSForms.TextBoxでは無理ですね。 そういったプロパティがない。 1行ごとに分割して複数のTextBoxを使ってそれらしく見せるしかないような気がします。 # ユーザー編集が必要なくて、表示のみだったらいいんでしょうけど。 # その場合は、WebBrowserコントロール使って何とか..... # 新規UserFormにTextBox1,WebBrowser1,CommandButton1配置してテスト。 'UserForm1Module Option Explicit Private Sub UserForm_Initialize()   With Me.TextBox1     .MultiLine = True     .Font.Strikethrough = True     .Text = "1行目" & vbLf & "2行目" & vbLf & "3行目"   End With End Sub Private Sub CommandButton1_Click()   Dim s As String   Dim v   v = Split(Me.TextBox1.Text, vbLf)   s = v(0)   v(0) = ""   With Me.WebBrowser1     .Navigate "about:blank"     .Navigate "javascript:document.write(" _         & "'<body bgcolor=""#FFFFFF"" topmargin=0 scroll=no>" _         & "<font size=2>" _         & s & "<del>" & Join(v, "<br>") & "</del>" _         & "</font>" _         & "</body>');"   End With End Sub

usny-stk
質問者

お礼

ありがとうございました

usny-stk
質問者

補足

返答ありがとうございます。やはり無理なんですね・・・ 1行目の最後が改行なので、改行以前に適応という方法はだめですか?? よろしくお願いします。

関連するQ&A

専門家に質問してみよう