• ベストアンサー

ユーザーフォームのテキスト印刷

ユーザーフォームでテキストだけ印刷させる方法はありますか? ユーザーフォームに何箇所か入力するリストボックス、テキストボックスなどがあり、すべてを入力した後、最後にエクセルに登録するようなフォームなのですが、登録する前にそれらを印刷できればと思います。 登録したエクセルを印刷してもいいんですが、他の情報とかがあるのでユーザーフォームだけを印刷したいです。また、ユーザーフォームをそのまま印刷するとよけいな装飾なども印刷されトナーがもったいないのでそれもしたくはありません。 宜しくお願いします。

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

  • ベストアンサー
  • hotosys
  • ベストアンサー率67% (97/143)
回答No.1

こんなのではどうでしょうか? 作業シートを作ってフォーム上のコントロールの値を書き込み印刷します。 ユーザーフォームのvba部にコピーして、登録の所から呼び出してください。 Private Sub sample() Dim ws As Worksheet Dim ctrl As Control Dim r As Long Set ws = Worksheets.Add '作業シート追加 r = 1 '作業シートでの行番号 For Each ctrl In Me.Controls ws.Range("A" & r) = ctrl.Name ws.Range("B" & r) = ctrl.Value r = r + 1 Next ws.PrintOut '作業シート印刷 Application.DisplayAlerts = False '次の行で作業シートを削除する時に警告が出るので、警告中止 ws.Delete '作業シート削除 Application.DisplayAlerts = True '警告再開 End Sub このままでは余計なコントロールも印刷するので、必要なら ws.Range("A" & r) = ctrl.Name ws.Range("B" & r) = ctrl.Value r = r + 1 の部分を If TypeName(ctrl) = "TextBox" Or TypeName(ctrl) = "ListBox" Then ws.Range("A" & r) = ctrl.Name ws.Range("B" & r) = ctrl.Value r = r + 1 End If や、 Select Case TypeName(ctrl) Case "TextBox", "ListBox", "ComboBox" ws.Range("A" & r) = ctrl.Name ws.Range("B" & r) = ctrl.Value r = r + 1 End Select に変更してください。

acchandesu
質問者

補足

むずかしそうですがやってみます。

関連するQ&A

  • EXCEL ユーザーフォームを使ったマクロ

    データの登録をするのにユーザーフォームを使おうと思うのですが、なかなかうまくいきません。教えてください。 ユーザーフォームにはコンボボックス、テキストボックス、コマンドボタンが貼り付けてあります。(コンボボックスのリストには呼び出したいシートの名前が入っています) コンボボックスのリストの中から呼び出したいシートを選択し、テキストボックスに入力した内容を、コマンドボタンを押すことで選択されたシート上の、あるセルに登録したいのですがどうすればよいでしょうか?

  • ユーザーフォームについて

    エクセル2002です。 ユーザーフォーム内のテキストボックスを使用して、 (1)A1のセルに1と入力されている状態でマクロを起動した場合、 (2)ユーザーフォーム内のテキストボックスには2と表示される (3)ユーザーフォーム内のボタンを押すと、A2のセルに2と入力される。 このような流れで、A列のデータ最終行に番号をふっていきたいです。 (A列のデータ最終行がA30なら、A31に31と番号をふる) ユーザーフォームのテキストボックスとボタンは作ってあるのですが、 それぞれに入れるコードを教えていただけないでしょうか。 よろしくお願いします。

  • エクセル ユーザーフォーム

    エクセルのユーザーフォームでコマンドボタンを使ってテンキーを作りたいのですが、入力するときにテキストボックス1、テキストボックス2の切り替え方がわからなく困っています。 2つのテキストボックスに対応させるにはどのようにコードを書いたら良いでしょうか。 よろしくお願いします。

  • VBAユーザーフォームで郵便番号から住所変換するには?

    会社で顧客リストを作成しているのですが、エクセルではじめてVBAを利用しようと思い、ユーザーフォームを使って連続登録までのマクロコードは入力出来たのですが、テキストボックスに郵便番号を入力すると自動的に次のテキストボックスに住所が入力されるようにするには、どのようなコードを追加すればよいのでしょう?

  • VBAでユーザーフォームのテキスト等に空白欄があった場合に、メッセージボックスが出るようにしたい

    今VBAでシミュレーションソフトを作っていますが、 ユーザーフォームのテキスト、リストボックスで入力されたものが、処理されて結果が出るようにしています。 そのなかで、空白のテキスト等があった場合、間違った結果が出力されるので、空白テキストが出ないようにメッセージボックスが出るようにしたいのです。 テキストはTB1~TB6 リストボックスはLB1~LB6 あります。 入力ボタンを押すと どれかひとつでも空白があればメッセージボックスが出力され、 ユーザーフォームに戻るようにしたいです。 ご回答よろしくお願いします

  • 〔ExcelVBA〕ユーザーフォームテキスト

    ユーザーフォームから値の入力を受け付けるようにしています。 このとき、テキストボックスに入力された数値が3桁区切りで表示されるように出来ないでしょうか?数値を入力するボックスなので。 100万円以上の数値を入力するときに見づらくて困っています。

  • VBAユーザーフォームで

     エクセルVBAでユーザーフォームより、テキストボックスで入力させたものをセルに表示させようとしています。  テキストボックスは1と2があり、テキストボックス1で入力した値の最初の5文字+固定値をテキストボックス2に自動で入力(表示)したいのですがなかなかうまくいきません。(自動入力後、手動で一部修正します。)  VBAをはじめたばかりの初心者ですが、どうぞよろしくお願いします。

  • エクセルVBAのユーザーフォーム上のテキストボックスについての質問です

    エクセルVBAのユーザーフォーム上のテキストボックスについての質問です。 Aのユーザーフォームの内容をBのユーザーフォームのテキストボックスへ引き継いで、Bのユーザーフォーム上で内容を編集するという仕組みにしたいのです。 Bのユーザーフォームは新規入力もかねたユーザーフォームなので、テキストボックスのイベントにAfterUpdateを使用して、テキストボックスの内容が書き換えられるとデータベースから検索して新規か既存か判断させています。 AのユーザーフォームからBのユーザーフォームのテキストボックスへ引継ぎさせるときにこのAfterUpdateを発生させたくないのですが、Application.EnableEvents=Falseなどを使ってもイベントが発生してしまいます。 また、イベントがどのタイミングで発生するかと、コードをステップで実行させると、このイベントは発生しません。そのために、いきづまってしまいました。 AのユーザーフォームからBに引き継ぐ処理  ユーザーフォームB.Load ---ユーザーフォームBのイニシャライズが実行される  ユーザーフォームB.テキストボックス = ユーザーフォームA.テキストボックス  ユーザーフォームB.Show ちょっと簡単に書きすぎですがこんな感じです。 コードをステップで実行するとユーザーフォームBのAfterUpdateは実行されません。(VBAエディタのバグ?) どなたか回答お願いします。

  • セルの値をユーザーフォームのテキストボックスに

    エクセルの質問です。 シート1にボタンを設置してユーザーフォームを呼び出すようにしています。 ユーザーフォームにテキストボックスを用意してて、シート1のセル(A1)に記入された数字を、ボタンを押した時に立ち上がったユーザーフォームのテキストボックスに表示されるようにしたいのですが、どうしたらいいのでしょうか?

  • ユーザーフォームにテキストフィールドを作りたい

    エクセルでユーザーフォームに、テキストフィールド(テキストを複数行に渡って入力でき、右側に上下に動かせるバーがあるもの)を作りたいんですが、どうやって作れば良いのでしょうか? ご存知の方、ご教授ください。 Excel2003です。