• 締切済み

VBAを使ってマクロを作り印刷したいです。

VBA初心者です。皆様よろしくお願いいたします。 質問内容は、例えばsheet1に私が作ったFAXのsheetがあり、住所や 名前、電話番号、重複しないデータ等を指定したセルに出してFAX用紙の フォーマットを崩さないように印刷することです。 ユーザーフォームで、sheet1(私が作成したFAX用紙)に印刷ボタンを設置し、クリックすると 重複しないデータ(基礎となるデータがsheet2にはっております)データ記入欄の 表示がされ、基礎となるデータを管理Noだとすると、 印刷ボタンをクリック ↓ 上下にテキストボックスが2つ表示さる(000001)から(000006)管理Noです。 ※ただし、上のテキストボックスだけ入力しても印刷を可にしてほしいです。 ↓ テキストボックスに管理ナンバーを入力(管理NOは、連続した値とします) ↓ 発行部数の入力画面 ↓ 印刷される感じです。 発行部数が1部でしたら、管理No.0000001から000006までの間を各一部印刷です。 sheet2は、縦列は10行分A~J行 横の値は、複数行はいります。ここでは、横10行分とさせてください。 sheet2の値は、Aから、管理No(重複しない基礎のデータ)、名前、電話番号、FAX番号 住所、会社名、部署名、担当者、日付、担当営業とします。 縦の列は、上記のデータが入っているものとします。 sheet1に戻り例えば、管理NoをA3,名前をB5,電話番号をC6,FAX番号をD6 住所をD3,会社名はD4,部署名をD5、担当者がB5,日付がA6,担当営業がB5に いれるような事ができたらと思い質問させていただきました。 皆様、何卒ご教授お願いいたします。

みんなの回答

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

>sheet1に戻り例えば、管理NoをA3,名前をB5,電話番号をC6,FAX番号をD6 >住所をD3,会社名はD4,部署名をD5、担当者がB5,日付がA6,担当営業がB5に > いれるような事ができたらと思い質問させていただきました。 まず最初に A3セルに管理Noをいれると、必要な情報が表示されるような Vlookup関数を配置できませんか? もし、それが出来たら ボタンを押すと Sheets("Sheet1").range("A3").Value=Me.Textbox1.Value Sheets("Sheet1").Printout で一つは可能です。 それが出来れば、ボタンを押すと A3セルに繰り返し、必要な管理Noが入るようなプログラムを考えます。 VBAだけで考えずに、エクセルの持っている関数や機能も使ってみてください。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

まずは「マクロの記録」でコード生成してみては? 変化する部分は後から手直し&変数へ置換して再利用

関連するQ&A

  • エクセルVBAのテキストボックスの番号をシートから検索することはできるのでしょうか?

    はじめまして。「FAX送信案内」という書類の雛形を作っているのですが、FAX番号を入力すると企業名や部署、担当者の名前が自動で出たらいいと思い、現在エクセルVBAに挑戦しています。本やインターネットで、検索してみたのですがわからないので質問させて頂きます。(正直私は頭悪いです;;) UserFormの構成は下の4つのテキストボックスからなっており 「Fax番号」 「企業名」 「担当部署」 「担当者名」 等 検索用のデータシートは 「Fax番号」「企業名」「担当部署」「担当者名」 という構成です。  私が目指しているのは、UserFormの「Fax番号」部分に番号を入力すると、UserFormに各項目に対応した、企業名などのデータが表示され(UserForm上)、上記の4つのデータ以外の項目を入力し終えたら、登録ボタンを押し、定型のFAX送信案内シートに転写するというものです。  検索の条件がシートにある場合のものは沢山見つかったのですが、UserFormのテキストボックスに入力したものを検索することは可能なのでしょうか? 宜しくお願い致します。

  • エクセルVBAで、テキストボックスにセルの値を入れる

    宜しくお願いします。 エクセルデータの各項目を、すでに書式(表)が印刷された用紙のそれぞれの項目の位置に印刷させたいのですが・・・ 各項目には、500行ぐらいのデータがあり、別のワークシートの表示させたい位置(すでに印刷された用紙にあわせてある)に各項目ごとのテキストボックスを作っておいて、そのテキストボックスに各項目のデータを1行ごとに表示させて、テキストボックスのフォント調整、印刷 ~を繰り返したいのですが、どのようなコードを書けばよいのでしょうか? 進め方としては、データシートからテキストボックスに各項目のデータが表示されたら、シート上でテキストボックスのフォントや位置の微調整が出来るようにしておいて、印刷ボタンをクリックすると印刷され、次へのボタンをクリックすると、次の行のデータがテキストボックスに表示されるようにしたい。 ※印刷する場合は、テキストボックス内の文字のみ印刷(シートには印刷したくない文字書きたいので・・・) また、そのフォームには、パターンが5つあって、データには1行ごとにパターン番号が入力されているとして、それぞれのパターンにあわせたテキストボックスの配置してあるシートへ行くようにもしたい。 データの入れ替わりが多いので、別のワークブックと繋がるような仕組みにしておいて、テキストボックスの配置してあるブック側から、データのあるブックを呼びに行ってデータを取りに行くようにしておきたい。 以上、条件が多くてすみませんが、VBAは初心者で、ほんの部分的にしかまだ分かりません。どなたか詳しい方宜しくお願いします。

  • 印刷マクロを教えてください。

    マクロは初心者です。よろしくお願いいたします。 エクセルで、列AからHまでにデータを入力しています。 また、Aの1から、Aの3までは行タイトルとしています。 列A4から下の行にNo1~の順番号をいれていますが、 例えばNo20からN045までのデータ分だけを印刷したい時など、指定したNoの範囲のデータだけを印刷出来るようなマクロがあれば教えてください。 印刷Noの指定は、行番号でもかまいません。 これまでの質問で印刷関係をみてみましたが、多すぎてわかりませんでした。どなたかよろしくお願いいたします。

  • 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 VBA マクロ 印刷

    ・Aさん、Bさん、Cさん、~ Xさんと26人がいます。 ・A列には、それぞれ上記の担当者名が入ってます。 ・B列以降には、担当の商品名・数量などが入っているとします。 ・必ずしも、全員のデータが入っているとは限りません。(その日により、違います。) →上記のうち、A列がCさんのデータ(行)だけを抜き出し、印刷することは可能でしょうか?該当がなければ、マクロを終了させたいのですが・・ よろしくお願いいたします。

  • データファイルを開かずにコピー、別ファイルに転記

    データファイルを開かずに、該当行をコピー、別ファイルに転記する方法を教えてください。 ・ユーザーフォームを持つファイルがあります(仮ファイル名:印刷用ツール.xls)  ユーザーフォームには、テキストボックス(番号入力用)と、コマンドボタンがひとつあります  印刷用ツール.xlsのSheet1は「印刷用シート」になっています。  印刷用ツール.xlsのSheet2は、「印刷用シート」に表示するためのデータが入るデータシートです。 ・↑とは異なるデータファイルがあります(仮ファイル名:データファイル.xls) データファイルには A列に番号 、B~D列には番号に付随する情報データが入力されています。 (例)  A   B   C   D  1  りんご 青森 150 2  いか  新潟 200 ***以下、実行したい内容のイメージです (1)ユーザーフォームのテキストボックスに番号を入力して、コマンドボタンを押す ↓ (2)テキストボックスに入力された番号と同じ番号をデータファイル.xls内で検索する(データファイル.xlsを開かずに) ↓ (3)データファイル内で検索して合致した番号行を行ごとコピーする ↓ (4)コピーしたデータを印刷用ツール.xlsのSheet2の1行目に貼り付ける(貼り付ける前にSheet2の1行目をクリアする) (後は、Sheet2のデータはSheet1(印刷用シート)で、表示したい部分だけを表示して印刷します) 宜しくお願い致します。

  • エクセルの印刷マクロについてご教示下さい。

    現在、     シート1のA列に番号(NO1~200)を、B列からG列までには各番号のデータを入れて     整理したものを、シート2で作成した印刷様式に、印刷マクロ(年賀状の宛名印刷を修正     したもの)を使って印刷を行っていますが、マクロを実行するとデータがない番号も印刷     (カラ印刷)していますので、困っています。         印刷データがない番号(例えばB列にデータがない)については、印刷しないようにする     には、どのようなコードを入れればよいのでしょうか。          VBAをはじめたばかり(素人)ですので、よろしくお願いいたします。(エクセル2003使用)

  • エクセルマクロ_テキストボックスをシートに反映

    エクセルマクロ初心者です。(2003使用_ユーザーフォーム) ユーザーフォームにリストボックスとテキストボックスを配置しています。リストボックス(Sheet1データを反映)の管理番号データを取得し、Sheet2のA1最終行に記載するところまではできました。 その後、もしテキストボックス1に日付型データ(回答日)があれば、先ほどの管理番号取得行の列のとなり(B列)に記載、空白であれば記載しない。 もしテキストボックス2に日付型データ(出荷予定日)があれば、先ほどの管理番号取得行の列のとなり(C列)に記載、空白であれば記載しない。 もしテキストボックス3にデータ(数量)があれば、先ほどの管理番号取得行の列のとなり(C列)に記載、空白であれば記載しない。 としたいのですが、offsetを使おうとしたのですが、うまくできませんでした。 すみませんが、どなたかご親切な方ご教授よろしくお願いいたします。 (エクセルSheet1=データベース) C5  D5 管理番号   品名       アカ12    りんご       アオ56    みかん       クロ34    なし       クロ89    すいか       アオ12    もも (エクセルSheet2=記入シート) 管理番号 回答日      出荷予定日 数量 アカ12 9月20日       9月23日 100 アオ56            9月21日 800 ↑回答日の記載はない場合もあります。 リストボックス1で選んだ管理番号取得行に一行に内容を表示させたいと思っています。 Private Sub UserForm_Initialize() With ListBox1 .ColumnWidths = "0;0;50;50" .ColumnCount = 4 .RowSource = "Sheet1!A5:D" & Worksheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row End With End Sub Private Sub CommandButton1_Click() Dim lRow As Long With Worksheets("Sheet2") lRow = .Range("A" & Rows.Count).End(xlUp).Row .Range("A" & lRow + 1).Value = ListBox1.List(ListBox1.ListIndex, 2) End With (ユーザーフォーム配置)   リストボックス1   テキストボックス1(回答日=9/20)   テキストボックス2(出荷予定日=9/21) テキストボックス3(数量=900)  テキストボックス4(コメント=送り先一部変更あり) すみませんが、どなたかご親切な方ご教授よろしくお願いいたします。

  • マクロって・・・

    Excelシート1にデータ(管理番号1~500)1~300まではデータが存在しています。301~500迄はデータは無いのですが、今後入力する予定です。 Excelシート2に管理番号を入力したら、必要なデータが反映するようにVLOOKUPで作成しています。 管理番号を1~300まで入力→印刷すればOKなんですが、マクロで データが入力されている管理番号まで勝手に印刷出来る方法ってありますか?? おれば教えて下さい。 マクロを始めたばっかりで・・・ 

  • 空白行になるまでループし、印刷するマクロを教えて下さい

    シート1にデータがあり、シート2にvlookup関数を使用して、 番号に対応する登録番号・所属・氏名を表示させるようにしました。 質問なのですが、 A2に番号が1~3まであり、空白(空白行)になるまで シート2に登録番号・所属・氏名を表示させ 番号ごとに印刷をしたいと思っています。 シート2に番号1の内容(登録番号・所属・氏名)を表示させ印刷し、 印刷後、シート2に番号2の内容を表示させシート2印刷し、 印刷後、シート2に番号3の内容を表示させシート2印刷し、 番号行が空白になったらこの処理を終了するというマクロを作りたいのですが、 どのようにしたらよいですか。 初心者でよく分からないのですが。 皆さん教えて下さい。 【シート1】 番号 登録番号 氏 名 所属学科 職名 1 00001 田中 健太 機械工学科 教授 2 00201 音   光 機械工学科 講師 3 01525 鈴木 洋  機械工学科 助手 【シート2】 番号 登録番号: 所属: 氏名:

専門家に質問してみよう