• ベストアンサー

【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

  • 【EXCEL2010 VBA】 部分的書式設定

    初心者ながら医療業務用マクロを作っています。 テキストボックス内の文字のうち、最初の改行までを取消線解除する方法を教えてください。 何卒よろしくお願いします。

  • VBA 書式設定を保持したままセル内の文字を追記

    EXCEL2010で医療系マクロを作っています。 CheckBox1は、Selection.Offset(0, -1)のセル内の文字を取消線にする為のチェックボックスです。 TextBox11は、Selection.Offset(0, -1)のセル内の文字の下に追記する為のテキストボックスです。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If CheckBox1 = True Then ' ' '取消線がある場合 Selection.Offset(0, -1).Characters(InStr(Selection.Offset(0, -1), vbLf), 1000).Font.Strikethrough = True Selection.Offset(0, -1).Value = Selection.Offset(0, -1).Value + vbLf + TextBox11.Value ' ' '☆追記して改行以降を取消し追記を解除 Else ' ' '取消線がない場合 Selection.Offset(0, -1).Value = Selection.Offset(0, -1).Value + vbLf + TextBox11.Value ' ' '☆追記 End If ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ この場合、Selection.Offset(0, -1)の文字にすでに取消線が設定されている場合にそれが外れたり、元々ついていなかったのについたりします。 書式設定を保持したままセル内の文字を追記することは可能でしょうか? 何卒ご教示のほどよろしくお願いします。

  • エクセルVBAユーザーフォーム「テキストボックス」「コンボボックス」の書式設定について

    ユーザーフォームを作成して、出荷実績を投入しようとしています。 現在、ユーザーフォームを作成して、 上から以下のようにボタンが並んでいます。 (1)コンボボックス1  商品コードと商品名を選択する。 (2)テキストボックス1~7  地域ごとの出荷実績を投入する。 (3)コマンドボタン1  決定→入力 (4)コマンドボタン2  終了 そして、以下3つの問題点がありますが、どのようにVBAを記述したら良いのか、わかりません。  a.コンボボックス1に表示される商品を商品コード   (アルファベット)と商品名で改行したい。   つまり「折り返して全体を表示する」ことは出来ないでしょうか。  b.「AAAA~」は5行目・「CCCC~」は7行目 といった   ように、商品ごとに値を投入する行を変更したい。  c.テキストボックス1~6の内容の合計が自動で(入力している   最中に)テキストボックス7に表示されるようにしたい。 次のようなVBAは記述出来たのですが、上記3つの要素を加えるには どのようにしたらよいのか、教えていただけないでしょうか? ちなみに入力する順番は次のようになっています。(設定済み) M4→L4→J4→K4→H4→I4 →M5→L5→J5→K5→H5→I5 ------------------------------------------------------------- ’フォームを表示させる。 Sub formdsp() UserForm1.Show End Sub ’フォーム内容 Dim cnt As Integer Private Sub Combobox1_Change() End Sub '入力ボタン Private Sub CommandButton1_Click() With ActiveSheet .Cells(cnt, 13) = TextBox1.Text .Cells(cnt, 12) = TextBox2.Text .Cells(cnt, 10) = TextBox3.Text .Cells(cnt, 11) = TextBox4.Text .Cells(cnt, 8) = TextBox5.Text .Cells(cnt, 9) = TextBox6.Text .Cells(cnt, 15) = TextBox7.Text cnt = cnt + 1 .Cells(cnt, 13) = Activate End With UserForm1.TextBox1.Text = "" UserForm1.TextBox2.Text = "" UserForm1.TextBox3.Text = "" UserForm1.TextBox4.Text = "" UserForm1.TextBox5.Text = "" UserForm1.TextBox6.Text = "" UserForm1.TextBox7.Text = "" UserForm1.Combobox1.Text = "" UserForm1.TextBox1.SetFocus End Sub '終了ボタン Private Sub CommandButton2_Click() Unload Me End End Sub 'コンボボックス Private Sub userform_initialize() cnt = 4 With UserForm1.Combobox1 .AddItem "AAAA 11111111111" .AddItem "BBBB 22222222222" .AddItem "CCCC 333333333" .AddItem "DDDD 444444" .AddItem "EEEE 5555555555" .AddItem "FFFF 666" .AddItem "GGGG 7777777" .AddItem "HHHH 88888" .AddItem "IIIII 999999999" .AddItem "JJJJ 0000000000000" .AddItem "KKKK 1111" .AddItem "LLLL 222222" .AddItem "MMMM 3333" End With End Sub

  • Excel2007 VBA テキストボックス設定

    Excel2000で作成したVBAコード(テキストボックスの塗りつぶしなし)をExcel2007で実行すると黒く塗りつぶされます。 <実行コード> ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 場所X, 場   所Y, 幅, 高さ).Select Selection.Characters.Text = タイトル1(場所) With Selection.Font .Name = "MS ゴシック" .FontStyle = "標準" .Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Selection.ShapeRange.Fill.Visible = msoFalse Selection.ShapeRange.Fill.Transparency = 0# ・・・ (1) 上記コード(1)の部分がおかしいのでしょうか?2000では上手く動きます。 2000 と 2007 の設定の違いがあるのでしょうか? マクロ登録で確認も出来ず、ネットの調べてもわかりませんでした。お力をおかしください。

  • VBA初心者です。

    VBA初心者です。 ユーザーフォームにテキストボックスとコンボボックスを1つずつ作り、それらを Private Sub ComboBox1_Change()    TextBox1.Value = ComboBox1.Value End Sub というふうに繋いでるとき、テキストボックスにフォーカスをあてさせないようするため、 Private Sub UserForm_Initialize()    TextBox1.Enabled = False End Sub このようにしました。ここまでは問題ありません。質問したいことは、このときテキストボックスに表示させる文字が淡色になるのを防ぐ方法です。    TextBox1.Locked = True これを上に付け加えればうまくいきそうなのですが、うまくいきませんでした…。どなたか解決方法を教えて下さい。

  • VBAで作成したテキストボックスを

    VBAで作成したテキストボックスを ?背景色を透明に設定 ?線を無し(透明)に設定 したいと考えています。 他サイトにTextBox1.BackStyle = fmBackStyleTransparentの様な表記はあったのですが、 TextBox1の様な図形の名前を使わずに、Selection.みたいに使用したいと考えています。 当方、テキストボックスの選択も今一理解していません。 ご教授よろしくお願いいたします。 With Selection.Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .Orientation = xlHorizontal .AutoSize = False .AddIndent = False End With

  • Excel VBA 別ブックを開かずに転記

    Excel2007のユーザーフォームについて教えてください。 ユーザーフォームを以下のように作成しました。 ■テキストボックス6つ テキストボックス2→件名 テキストボックス3→数 テキストボックス4→名前 テキストボックス5→備考1 テキストボックス6→備考2 ■コマンドボタンが1と3の2つです。 コマンドボタン1→転記と印刷 コマンドボタン3→終了 ■シートの構成  sheet"作成と一覧"   1行目を以下の項目で使用しています。  A1→番号(テキストボックス1を表示)  B1→件名(テキストボックス2を表示)  C1→数(テキストボックス3を表示)  sheet"印刷"  A1→番号(テキストボックス1を表示)  A2→件名(テキストボックス2を表示)  B2→数(テキストボックス3を表示)  A3→名前(テキストボックス4を表示)  A4→備考1(テキストボックス5を表示)  A5→備考2(テキストボックス6を表示) テキストボックスに入力した値を2つのシートにそれぞれ転記して、 シート"印刷"を2部印刷しています。 ここまで以下のコードで行いました。 Private Sub CommandButton1_Click() '入力値を作成と一覧シートに転記 行 = ActiveCell.Row 列 = ActiveCell.Column Cells(行, 列) = UserForm1.TextBox1.Value Cells(行, 列 + 1) = UserForm1.TextBox2.Value Cells(行, 列 + 2) = UserForm1.TextBox3.Value '入力値を印刷シートにに転記 Worksheets("印刷").Range("A1") = UserForm1.TextBox1.Value Worksheets("印刷").Range("A2") = UserForm1.TextBox2.Value Worksheets("印刷").Range("B2") = UserForm1.TextBox3.Value Worksheets("印刷").Range("A3") = UserForm1.TextBox4.Value Worksheets("印刷").Range("A4") = UserForm1.TextBox5.Value Worksheets("印刷").Range("A5") = UserForm1.TextBox6.Value 部数 = 2 Worksheets("印刷").PrintOut Copies:=部数, Collate:=True UserForm1.TextBox1.SetFocus Cells(行 + 1, 列).Select End Sub Private Sub CommandButton3_Click() '終了ボタンで値をクリアしてウィンドウを閉じる Dim Ctrl As Control For Each Ctrl In Controls If TypeName(Ctrl) = "TextBox" Then _ Ctrl.Value = "" Next Ctrl Unload Me End Sub 教えて頂きたい事なのですが・・・ コマンドボタン1の入力値を作成と一覧シートに転記の所なのですが、 アクティブセルではなく、常にA列の最後の値の次の空白行に転記するようにしたい場合、 どのように書き換えればいいのでしょうか? もう一点ですが、 別ブックにテキストボックス1から6が入力された一覧があります。 この別ブックを開かずに、 テキストボックス1に入力された番号を探して、 テキストボックス2から6に表示されるようにしたいのです。 うまく説明できないのですが・・・ 別ブックの名前は"たちつ" 別ブックは、あいうサーバーの かきくフォルダの中のさしすフォルダです。 ブック"たちつ"に"一覧"というシートがあります。 一覧のシートのD列の3行目以降には番号が入力されており、日々増えています。 テキストボックス1に入力された番号を、 一覧のD列から探し、 I列の値をテキストボックス2へ K列の値をテキストボックス3へ L列の値をテキストボックス4へ M列の値をテキストボックス5へ J列の値をテキストボックス6へ転記させたいのです。 同じブックの別シートを参照するときには Application.VLookupで出来たのですが、 マクロの記録でやってみても、解決できませんでした。 コードをご覧いただいてお分かりの通り、 VBA超初心者です。 ネットを見ながら試行錯誤している状況です。 コードの間違い等あるかもしれませんが、 ご教示よろしくお願いいたします。

  • Excelの書式設定を元に戻すには?

    Excel初心者です。 あるフォントで、テキストボックスを使って表を作成中に、 操作を誤ってだと思いますが、テキストボックスの中の最後の文字 (○○様の“様”です。)が、全てのテキストボックスから 消えてしまいました。(表示されなくなってしまいました。) 他のテキストボックスの中の文字のフォントに変えると、 “様”が現れます。 この設定を解除するには、どうすれば良いのでしょうか。 Excelのヘルプで検索したりしましたが、解決出来ません(泣) どうしたら解除出来るか、教えていただけないでしょうか。 よろしくお願いします。

  • Excel2003を使っていてマクロ(VBA)

    現在Excel2003を使っています。 説明が苦手なのでどう言えば伝えられるか分からないのですが。 ちょっとした自作カードを作っていて、(図参照)C7セル内に打ち込まれた文字列をクリップボードにコピーし、一番右端○の画像ファイル内にテキストボックスを作成させた黄色枠内に、 先程クリップボードでコピーした内容をテキストボックスをアクティブにし、文字列として貼り付けるとゆうマクロを作成しています。 ------------------- Sub を() ' ' を Macro ' マクロ記録日 : 2015/2/27 ユーザー名 : Owner ' ' Range("C7").Select ActiveCell.FormulaR1C1 = "C7" ActiveSheet.Shapes("Rectangle 27").Select Selection.Characters.Text = "C7" With Selection.Characters(Start:=1, Length:=2).Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Range("D6").Select --------------------------- とゆうプログラムとなっており、この場合だとSelection.Characters.Text = "C7" の""間のC7と文字列が入ります。ここを""にすると空白ですし、 そこでIF関数を用いて ""の場合は何もしない ""に何か入力(C7セル内に入力)されたときのみ、C7セルない文字列をクリップボードにコピーしその内容を右端の画像内テキストボックスに貼り付けるとゆうふうなプログラムを作成するには、参考としてどのように書いたらよろしいのでしょうか? クレクレ内容みたいで申し訳なく思いますが何とぞ教えていただけませんでしょうか。

  • EXCEL VBA テキストボックスの文字で置換したい

    いつもお世話になっています。 エクセルのVBAでフォームをつくり、フォーム上のテキストボックスに入力した文字でデータ変換をしようと考えています。たとえば「東京」を「東京都」という具合です。 メニューから実行すれば良いだけの話なのですが 業務上、より作業を簡素化したいためです。 下記のようにマクロを記述しましたが、うまく動作しないのでどうしてでしょうか?よろしくお願いします。 Sub 文字を置き換える() Dim mae As String Dim ato As String Columns("H:H").Select mae = UserForm1.TextBox2.Value ato = UserForm1.TextBox3.Value Selection.Replace What:=mae, Replacement:=ato, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub