• ベストアンサー

UserFrom Labelにセルの装飾文字を表示

Excel 2003 VBAにて UserFormに配置してあるLabelに セルの内容を表示させたいのですが・・・ 値は表示されますが、装飾文字(取り消し線、下線など)も セルの表示内容そのまま Labelにも表示できないのでしょうか? Sub 表示() userform1.Label1 = Range("A1") userform1.Show End Sub

  • mi-tan
  • お礼率68% (251/366)

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

  • ベストアンサー
回答No.3

こんにちは。 簡単に言うと、ラベル自体には、Captionにしても、Pictureにしても、直接、セルのプロパティを反映するようなプロパティは持ちません。 UserForm1.Label1 = Range("A1") ←暗黙的(Default)で、Valueプロパティになる。 ですから、書式情報のプロパティはありません。 ラベルは、いわゆるテキストを反映するだけのもので、書式を表現するような複合的な機能を持ちません。そこで、VB6のランタイムから、他にコントロールはないものか探してみましたが、こんどは、開発用のライセンスがないと、別のコントロールは使えません。 簡単に不可能だとはいいませんが、一応、通常のVBAでは、この質問はできない、ということになります。

その他の回答 (2)

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

お望みの表示になるかどうかは試していませんので何とも言えないのですが。 セルの「取り消し線の有無」を取得する   Cells(1, 1).Font.Strikethrough で、出来ます。 「ラベルに取り消し線を引く」   Label1.Strikethrough = True で出来ます。 組み合わせて、   Label1.Strikethrough = Cells(1, 1).Font.Strikethrough で、A1に合わせて「全体に」付けたり消したり出来ると思います。 が、確か・・「セルの一部に取り消し線」だと、 前者がNullを返してきたような気がするので、 このままだとお望みの処理にはならないかもしれません。 一応、参考程度に。

mi-tan
質問者

お礼

そうなんですよね~ 「全体に」は出来るんですけど・・・ 「一部」となると無理なんですかね???(TT;)

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

取り消し線などの表示は出来ないですが、 「表示形式」であれば、以下の様にすれば出来ます。 Sub 表示() UserForm1.Label1 = Range("A1").Text UserForm1.Show End Sub

mi-tan
質問者

お礼

.text をつけても同じ結果ですね~ そもそも、装飾文字は反映されない仕様でしょうか?

関連するQ&A

  • VBAでUserFormでProgressBarとLabelを同時表示できない理由は?

    VBAでUserFormをつかってProgressBarとLabelを同時に表示させる。つもりでしたが、ProgressBarが満たされた後Labelが表示されます。その理由と対策を教えて下さい。そのコードを以下に示します。 Sub a() With UserForm1 .Show vbModeless .Label1 = "始めのテキスト" End With s = 1 e = 20000 For i = s To e UserForm1.Label1 = "始めのテキスト" UserForm1.ProgressBar1.Value = i / e * 1000 Next i End Sub お願いします。

  • Excel VBAについて

    Excel VBAにおいて、Sheetの選択した行によって値を表示するUserFormを変更したいと思っています。 現在以下のようにしたのですが、実行すると「SubまたはFunctionが定義されていません」というエラーが表示されます。 「Controls("UserForm" & x).Label1.Caption =」のところをどのようにしたらよいのでしょうか。 Private Sub CommandButton1_Click()   If ActiveCell.Row = 5 Then     UserForm1.Show     x = 1   ElseIf ActiveCell.Row = 6 Then     UserForm2.Show     x = 2   End If End Sub Private Sub Worksheet_Selection Change(Byval Target As Range)   Controls("UserForm" & x).Label1.Caption = ・・・

  • Excel VBA セルの内容をTextBoxに

    ExcelのVBAで質問があります。 複数のシートの表に入力した値の合計を出したいのですが、 その後の処理もあり、ユーザーフォームのテキストボックスに反映させたいと考えています。 Windows7のExcel2010で作っています。 試しにセルB1の値が変わった時、 テキストボックスに反映させるつもりで作ったコードは以下の通りですが、 上手くいきません。 Sub Z_test() UserForm2.Show vbModeless End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(False, False) = "B1" Then UserForm2.TextBox1.Value = Range("B1").Value '←※ End If End Sub ※の行には他にも UserForm2.Controls("TextBox1").Value = Range("B1").Value と調べたコードを試してみたのですが、 セルの内容が全く反映されません。 セルB1には数式の「=SUM(C2:C1000)」 が入っており、表のC列に入力された値の合計を求めています。 どなたかお知恵を拝借できれば大変助かります。 宜しくお願い致します。 長文失礼しました。

  • ListBoxへの表示 及び Labelの文字色変更について

    こんばんわ。いつもお世話になっています。 下記質問事項についてよろしくお願い致します。 1.ListBoxへの表示 ListBoxへ、セルA列に入力している文字を表示させたい。 しかし、A列には追加があるので、決まったRangeではない。 2.Labelの文字色変更 Range("a1")の文字色書式が赤なら、UserFormに貼り付けているLabelの文字色も 赤にしたい。また、CommandButtonの表示色も同じく変えたい。 よろしくお願いいたします。

  • Userform Label Backcolor

    Userform Label Backcolorの色イメージが意図したものになりません。 どうすればいいか教えて下さい。 UserForm1.Label1.BackColor = RGB(204, 204, 102) UserForm1.Label2.BackColor = RGB(255, 204, 204) を実行したときのUserForm1のLabel1とLabel2の色イメージが Range("A1").Interior.Color = RGB(204,204, 102) Range("A2").Interior.Color = RGB(255, 204, 204) を実行したときのセルA1,A2の色イメージとが随分乖離しています。

  • フォームのリストボックスに値を表示させたい

    VBA フォームのリストボックスに値を表示させたい A1→aaa A2→bbb リストボックスに上記の値を表示させたいなら、 Private Sub UserForm_Initialize() UserForm1.ListBox1.RowSource = "Sheet1!A1:A2" End Sub で出来ますが、シート上のセルで表示する値を指定するのではなく、VBA上で、リストボックスに表示させる値を指定したいのです。 Private Sub UserForm_Initialize() UserForm1.ListBox1.RowSource = "aaa,bbb" End Sub を実行すると、VBA実行時エラー380になってしまいます。 UserForm1.ListBox1.RowSource = "aaa;bbb" もダメでした。 ご回答よろしくお願いします。

  • 複数のユーザーフォームをコマンドボタンにて表示・非表示させるには

    VBA勉強中のものです。 複数のユーザーフォームをコマンドボタンを使用して画面への表示切替を考えております。 例)ユーザーフォーム1,ユーザーフォーム2,ユーザーフォーム3のそれぞれにコマンドボタン1,コマンドボタン2,コマンドボタン3を作成し、   コマンドボタン1→ユーザーフォーム1を表示   コマンドボタン2→ユーザーフォーム2を表示   コマンドボタン3→ユーザーフォーム3を表示 とするようなことを考えおります。  そこで、下記のようにコードを作成したのでですが,一度表示させたユーザーフォームを再度表示させようとコマンドボタンをクリックしたら、「フォームはすでに表示させているのでモーダル表示はできません」とエラーがでてしまいます。   どなたか、どのようにしたらいいかご教授ねがいます。 サンプルコード) --------------------------------------------------- 'UserForm1のコード Private Sub CommandButton2_Click() Call UserForm2_show UserForm1.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm1.Hide End Sub ---------------------------------------------------- 'UserForm2のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm2.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm2.Hide End Sub ------------------------------------------------------- 'UserForm3のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm3.Hide End Sub Private Sub CommandButton2_Click() Call UserForm2_show UserForm3.Hide End Sub ------------------------------------------------------------ '標準モジュール コード Sub UserForm1_show() UserForm1.Show End Sub Sub UserForm2_show() UserForm2.Show End Sub Sub UserForm3_show() UserForm3.Show End Sub

  • セルの選択について

    <Sheet2のコード> Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not UserForm3.Visible Then UserForm3.Show 0 UserForm3.TextBox1.Text = Selection.Count End Sub *********************************************** <UserForm3のコード> Private Sub CommandButton1_Click() With Selection .MergeCells = True .WrapText = True .Value = TextBox2.Text & ComboBox1.Text End With UserForm3.Hide End Sub ---------------------------------------------- Private Sub UserForm_Initialize() Dim lastrw As Integer, lastrw2 As Integer, i As Integer lastrw = Sheet3.Range("A1").End(xlDown).Row lastrw2 = Sheet3.Range("B1").End(xlDown).Row If Sheet2.Range(Cells(5, 4), Cells(5, 100)).Select Then ・・・(1) For i = 1 To lastrw - 1 ComboBox1.AddItem Sheet3.Cells(i + 1, 1).Value Next i End If If Sheet2.Range(Cells(6, 4), Cells(6, 100)).Select Then ・・・(2) For i = 1 To lastrw2 - 1 ComboBox1.AddItem Sheet3.Cells(i + 1, 2).Value Next i End If End Sub ************************************************* ワークシート上でマウスで選択されたセルの行ごとにUserForm3のComboBox1で表示させる文字を変えたいのですが、どのようにすればよいのでしょうか。 上の(1)(2)だととマウスで選択されたセルではなく(1)(2)の範囲のセルが結合されてしまいます。。。 また、今はワークシート上でマウスを左クリックする度にUserForm3が表示されてしまいます。 これをワークシート上でマウスでセルを選択して右クリックするとUserForm3が表示される ようにしたりすることは可能なのでしょうか。

  • オプションボタンで選択したセルにキー入力出来ない他

    UserForm1を配置しその中にOptionButtonを2つ配置しまして、 OptionButton1をクリックした時は、a1セルに東京と表示した後カーソルをb1セルに移動させて、 そのB1セルに数字をキー入力する。 OptionButton2をクリックした時は、a1セルに大阪と表示した後カーソルをb1セルに移動させて、 そのB1セルに数字をキー入力するマクロをつくりました。 '---------------------------- Private Sub Workbook_Open() UserForm1.Show End Sub Private Sub OptionButton1_Click() Range("a1").Value = "東京" Range("b1").Activate End Sub Private Sub OptionButton2_Click() Range("a1").Value = "大阪" Range("b1").Activate End Sub '---------------------------- 動かしてみて、下記2点を改良したいのですが 1、OptionButtonをクリック後、数字キーを押してもb1セルに表示されません、b1セルをマウスでクリック後キー入力すると入力した数字が表示されます。マウスでクリックしなくてもキー入力出来る   ようにしたい 2.ファイルを保存終了後、再度開いたときオプションボタンの丸印が2つ共○になっているが、前回終了時に選んだオプションボタンに●がついた状態で表示させたい 以上 よろしくお願いします

  • Labelでプログレスバーの表示

    いつも大変お世話になっております。 動作が重いマクロ、プログラムが多いため、 プログレスバーを表示させたいと思っています。 フォームを20個以上準備しており、 それに対し プログレスバーを使いたいのが10個程度であり、 今後増えるかもしれません。 そのため、標準モジュールを利用し、簡単に プログレスバーを設定できないかと思っています。 '=================== 【標準モジュール Module1】 Sub Bar_progressBarData(Byval UserFormName as string, Byval MaxData as Long,LabelName as string) 'UserFormName 引用するところ?のユーザーフォーム名 'MaxData バーの最大値設定 'LabelName バー表示するラベル名 'ProgressBarの初期設定などをやる End sub '------------------------- Sub Bar_progressBarInt(Byval UserFormName as string, Byval MaxData as Long,LabelName as string) 'UserFormName 引用するところ?のユーザーフォーム名 'MaxData バーの最大値設定 'LabelName バー表示するラベル名 'ProgressBarの値を増やしていく(増加させていくプログラム) End sub '================= 【UserForm Test】 Sub DataChangeGraph() 'ループが多いデータ Call Bar_progressBarInt(Me.Name,10,"Label1")'バーの値を増加させていく End Sub Private Sub UserForm_Initialize() Call Bar_progressBarData(Me.Name,10,"Label1")'初期設定(例として、max10にしました) End Sub Maxの値、プログレスデータに使用する値は グローバルに設定してしまうというのも楽かもしれません。 しかし、この続きの肝心なプログラムが分かりません。 「プログレスバーの作り方」 h ttp://www.h3.dion.ne.jp/~sakatsu/ProgressBarTopic.htm このサイトが良いと評判でしたので、 見ましたが何をしているのか良く分かりませんでした。 Widthを設定? Dim sngBarMaxWidth As Single? そして、私がやりたいこととは少し違うようです。 私がやりたいのは、フォーム上に毎回プログレスバー用のプログラムを書くのが面倒だったので、 標準モジュールとしてSubプロシージャを作成(日本語? そして、それを引用してプログレスバーの設定を簡単に終わらせる ということがしたかったのです。 できれば、ラベルなど Excelに標準で備わっているものを使用したいと思っています。 プログレスバー専用のツール(参照設定などを用いるもの) はその後にエラーが出たとき困るので、使いたくありません。 なんとなく伝わったでしょうか? 回答よろしくお願い致します。 Excel2003 VBA

専門家に質問してみよう