- 締切済み
マクロって・・・
Excelシート1にデータ(管理番号1~500)1~300まではデータが存在しています。301~500迄はデータは無いのですが、今後入力する予定です。 Excelシート2に管理番号を入力したら、必要なデータが反映するようにVLOOKUPで作成しています。 管理番号を1~300まで入力→印刷すればOKなんですが、マクロで データが入力されている管理番号まで勝手に印刷出来る方法ってありますか?? おれば教えて下さい。 マクロを始めたばっかりで・・・
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- fujillin
- ベストアンサー率61% (1594/2576)
No1です。 >1)A65536セルを選択 >2)Endキー+↑キーを同時に押下げが????です。 コードの意味を手作業に置き換えるとこのようになるということです。 かえって混乱させてしまったようで、すみませんでした。 参考までに、 ◆列数は固定として(仮に5列として)↑の方法でプリントする例 Sub test() Range(Cells(1, 1), Cells(Cells(Rows.Count).End(xlUp).Row, 5)).Select Selection.PrintOut Copies:=1 End Sub ◆または、CurrentRegionでも範囲が取れそうなので、それでプリントする例 Sub test() Range("A1").CurrentRegion.Select Selection.PrintOut Copies:=1 End Sub このまま終わると範囲がセレクト状態のままになるので、キャンセルしておいたほうがいいかも。 あるいはセレクトしないで、その範囲をrng(:Range)に入れておいて、印刷範囲を設定してプリントするというのもあり。 ActiveSheet.PageSetup.PrintArea = rng.Address ActiveSheet.PrintOut Copies:=1
- hige_082
- ベストアンサー率50% (379/747)
>Excelシート1にデータ(管理番号1~500)1~300まではデータが存在しています。 A列、管理番号として、500まですでに記入済み?かも知れないので 最終行はB列で判断 >Excelシート2に管理番号を入力したら 何処に入力するか分からないので、A1としています これをVLOOKUP関数の設定されているセルに変更してから、実行 Sub test() Dim a As Range Dim b As Variant Dim i As Long Set a = Worksheets("sheet2").Range("a1") 'VLOOKUP式が入っているセル With Worksheets("sheet1") b = .Range("a1", .Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 1)) End With With Worksheets("sheet2") For i = 1 To UBound(b, 1) a.Value = b(i, 1) .PrintOut Next i End With End Sub
- FEX2053
- ベストアンサー率37% (7991/21371)
#1さんの方法が正攻法なんですが、一種の裏技として。 1.印刷したい行の、一つ下の行まで一旦印刷範囲にします。 2.これ以降のデータの追加は、その「一つ下の行」にカーソルを 合わせ、行を「挿入」することで処理します。 こうすれば、印刷範囲はいつも「最後の行の一つ下」までになります。 普通の発想ではないので手入力だと面倒だと思いますが、処理がマクロ でなされているなら、考え方としては充分ありだと思います。
- fujillin
- ベストアンサー率61% (1594/2576)
入力のある最下行を求める方法 例としてA列に管理番号があるとして Cells(Rows.count. 1).End(xlUP).Row で、最下行の行番号が求められます。 以下を自動記録でやってみるとわかるでしょう。 1)A65536セルを選択 2)Endキー+↑キーを同時に押下げ あとは、その範囲(列が決まっていれば問題ないし、同様にして列範囲を求めることも可能)を利用して印刷すればOKです。
補足
解答有難うございます。 が、意味が全くわかりません。 Cells(Rows.count. 1).End(xlUP).Rowは最下行の行番号が求める為はわかるんですが 1)A65536セルを選択 2)Endキー+↑キーを同時に押下げ が????です。