- ベストアンサー
【EXCEL2010 VBA】 部分的書式設定
初心者ながら医療業務用マクロを作っています。 テキストボックス内の1行目のみ取消線を解除する方法を教えてください。 UserForm1.TextBox12.Lines(1).Font.Strikethrough = False これではさすがにエラーが出ました; 何卒よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。お邪魔します。 MSForms.TextBoxには、 フォント設定を部分的に変更する機能は用意されていません。 無論、テキストの一部を行として指定することも出来ません。 なので、代替え案を検討された方がいいです。 #私が実際にテストしていたのもend-uさんと同趣旨のものだったりしたのですが 直接の回答としてはNo.1のご回答で十分だと思います。 私が気になったのは、 実際にやりたいこと、 と、 TextBoxの扱いを含めた全体の設計 が 目的に合ったものになっているか、 ということです。 # TextBox で改行しながら手入力って個人的に違和感があるもので、、、。 ご提示のコードに出てくる TextBox12 というのは、 ■手作業での入力(編集)に用いているものなのでしょうか?■ もしも、 ■ただ単に表示させる目的だけでTextBox12を用いているなら■ 目的に合ったツール選びが出来ていないのかも知れません。 また、 ■取り消し線でなければいけないのでしょうか?■ ■"1行目"にあたるテキストの一部だけを他とは差別して表示する■ ということで足りるとか? 例えば、表示だけが必要で手入力はしないのなら、 WebBrowserコントロールを使う方法が妥当に思います。 加えて、取り消し線である必要がないなら、 ListBoxコントロール(.ListStyle=1)を使うのが簡便でしょう。 手入力をするのなら、必要な項目(行)の数だけ TextBox を 縦に隣接させて並べるのが現実的だと思います。 #一昔前ならRichTextBoxコントロールとか Office Web Components SpreadSheetとかで容易に解決できたのですが、 現在は使えないようですので。 ご自身で目的を明確にして設計を見直すことから、あらためてチャレンジしてみてください。
その他の回答 (2)
- end-u
- ベストアンサー率79% (496/625)
よろしくお願いしますと言われても。-"- >MSForms.TextBoxでは無理ですね。 >そういったプロパティがない。
- end-u
- ベストアンサー率79% (496/625)
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
お礼
ありがとうございました
補足
返答ありがとうございます。やはり無理なんですね・・・ 1行目の最後が改行なので、改行以前に適応という方法はだめですか?? よろしくお願いします。
お礼
ありがとうございました
補足
アドバイスを参考に、テキストボックスの上にテキストラベルを配置することで解決しました。丁寧に説明していただきありがとうございました。