No.1ベストアンサー
- 回答日時:
以前、同様の質問に回答したことがあります。
Excelでは面倒かもしれません。『エクセルで縦長のデータを紙の無駄なく印刷』
http://www.okweb.ne.jp/kotaeru.php3?q=65628
今回は視点を変えて、手作業で行われているだろう『カット&ペースト』をマクロにしてみました。
ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入し、そこに下記コードを貼り付けます。
質問にあるA、B列が3個並んだカタチになります。
編集したいシートを選択してマクロを実行します。(ツール→マクロ→マクロ→下記を選択→実行)
編集したいシートのコピーを作り、実行してみてください。1ページの行数はpageModeで指定してください。
なお、1行目は表題、2行目からデータがあるとしています。2行目以降を印刷範囲の設定を行い、1行目を行タイトルに設定します。この辺りはアレンジして下さい。
『最初のデータの位置』を変更すれば、A列以外からの処理、複数タイトル行に対応できます。
Public Sub makePrintForm()
'2列を3組の2列に編集しなおすマクロ
Dim syoriKubun As Integer '処理区分
Dim cutArea As Range '移動する元のセル範囲
Dim topCell As Range '移動する元のセル範囲の左上先頭セル
Dim topCellAddress As String '移動する元のセル範囲の左上先頭セル番地
Dim cutRows As Long '移動する行数
Const pageMode = 60 '1ページの行数 *** これを指定します ***
Application.ScreenUpdating = False
'表題をコピー
Set topCell = ActiveSheet.Range("A2") '*** 最初のデータの位置を指定します ***
With topCell
.Offset(-1, 3) = .Offset(-1, 0): .Offset(-1, 4) = .Offset(-1, 1)
.Offset(-1, 6) = .Offset(-1, 0): .Offset(-1, 7) = .Offset(-1, 1)
End With
'データを分割
Set topCell = ActiveSheet.Range("A2").Offset(pageMode, 0)
If topCell.Offset(1, 0) = "" Then
cutRows = 1 'データ数が1ページの行数+1の時
ElseIf topCell.End(xlDown).Row = ActiveSheet.Rows.Count Then
Exit Sub 'データ数が1ページの行数までの場合は終了
Else
cutRows = topCell.End(xlDown).Row - pageMode - 1
End If
'データがあるだけ繰り返す
While cutRows > 0
Set cutArea = topCell.Resize(cutRows, 2)
Select Case syoriKubun 'データを移す場所の計算
Case 0, 1: Set topCell = topCell.Offset(-pageMode, 3)
Case 2: Set topCell = topCell.Offset(0, -6)
End Select
'CutするのでtopCellの番地を覚えておく
topCellAddress = topCell.Address
'データを移動
cutArea.Select: Selection.Cut 'カット
topCell.Select: ActiveSheet.Paste 'ペースト
'次の処理
syoriKubun = syoriKubun + 1: If syoriKubun > 2 Then syoriKubun = 0
Set topCell = Range(topCellAddress).Offset(pageMode, 0)
cutRows = cutRows - pageMode
Wend
Application.ScreenUpdating = True
Range("A1").Select
End Sub
参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=65628
この回答へのお礼
お礼日時:2001/12/03 02:37
早速ご回答いただきありがとうございます。
おかげさまで3列づつ印刷することができました。
今までマクロを使うようなデータ処理をすることがなかったので、これから勉強しようと思っています。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで長い行を5行ごとに1...
-
【エクセル】区切り文字が含ま...
-
エクセル 種類の個数をカウン...
-
エクセルの関数で範囲のある数...
-
SUMIFS関数の計算結果が違います
-
差し込み印刷で文字列が「0」と...
-
差込印刷について
-
アプリやエクセルでたくさんの...
-
COUNTIFS関数で日付データを数...
-
斜めの貼り付け
-
エクセルで列にあるユニークな...
-
エクセルで名寄せ
-
Application.Matchについて
-
コピーデータの欠落
-
オブジェクトブラウザでデータ...
-
0:00をカウントしない方法
-
エクセルにおいて、数値が入っ...
-
エクセルで時間の合計ができません
-
オートフィルタをフォーム上(V...
-
エクセルで円グラフに引き出し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで長い行を5行ごとに1...
-
【エクセル】区切り文字が含ま...
-
差し込み印刷で文字列が「0」と...
-
エクセルの関数で範囲のある数...
-
テキストデータのPDFをWordで開...
-
エクセルで時間の合計ができません
-
0:00をカウントしない方法
-
オブジェクトブラウザでデータ...
-
エクセルで列にあるユニークな...
-
SUMIFS関数の計算結果が違います
-
斜めの貼り付け
-
エクセルにおいて、数値が入っ...
-
COUNTIFS関数で日付データを数...
-
エクセル 貼り付け時の文字化け
-
エクセルのマクロで他のシステ...
-
wordデータを、excelに自動で入...
-
マクロ 行挿入で数式も反映す...
-
PDF からの 数値データ抽出
-
【マクロ】転記ツール。転記先...
-
差し込み印刷で、生年月日を昭...
おすすめ情報