• 締切済み

マクロで最終行を空欄にしたいのですが、出来なくて困ってます

VBA初心者です。 仕事で、見積書を作成する際に多い時には2~3枚にわたる時で、マクロが既に組んであるのですが、最終行は空欄のはずが、2ページ目のデータが上がってきています。 どうすれば、最終行を空欄に出来るのでしょうか? このマクロが、延々と続いています。 Dim a As Integer Dim c As Integer Dim count As Integer b = 1 c = 1 count = 1 '明細1の処理 a = 1 If Sheet2.Cells(a + 3, 2) = "" Then GoTo 20 Sheet13.Cells(b + 22, 1) = count Sheet13.Cells(b + 22, 2) = Sheet2.Cells(a + 3, 3) Sheet13.Cells(b + 22, 12) = Sheet1.Cells(c + 14, 5) Sheet13.Cells(b + 22, 13) = Sheet1.Cells(c + 14, 6) Sheet13.Cells(b + 22, 17) = Sheet1.Cells(c + 14, 10) If b = 26 Then JUMP1 If b = 74 Then JUMP1 b = b + 1 c = c + 1 count = count + 1 For a = 2 To 8 If Sheet2.Cells(a + 3, 2) = "" Then GoTo 10 Sheet13.Cells(b + 22, 2) = Sheet2.Cells(a + 3, 3) If b = 26 Then JUMP1 If b = 74 Then JUMP1 b = b + 1 Next a 10 If b = 26 Then JUMP1 If b = 74 Then JUMP1 b = b + 1 初心者の為、宜しくお願い致します。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >印刷の関係で1ページ目の最終行(A48)に明細が入らないように空欄にして、2ページ目のB53に挿入したいのです。 おっしゃる意味は分かりましたが、たとえば、マクロの最終の段階で、A48 にデータがあったら、このようなマクロを付けてみるとか、いかがでしょうか?本来は、マクロを全体的に書き換えたほうがよいのですが。 If Not IsEmpty(Range("A48").Value) Then   Rows("48:52").Insert Shift:=xlDown End If

pansy819
質問者

お礼

Wendy02さま。 ありがとうございました。 仕事のデータを家に持ち帰る事を禁止されていますので、月曜日にマクロに付け足して編集してみたいと思います。 マクロを全部書き換えるには、私の技術では時間もかなり必要と思いますのが、勉強と思い挑戦してみようとは思っています。 最初の質問の時点で内容が分かりづらいながらも回答を出して頂きまして、本当にありがとうございました。 頑張って修正してみます。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 最初に、そのようなコードですと、一般的に回答はつきませんし、専門掲示板では、批判されるだけで終わってしまいます。その「Goto」 は読めません。プログラミングは経験がおありのようですが、質問になるベースの表とご説明をいただかないと、そのコードでは、ほとんど読み取れません。 >どうすれば、最終行を空欄に出来るのでしょうか? 質問も良く分かりません。 最終行は、空白のはずだけれども、その空白行を取得できていない、ということではありませんか? それと、 Sheet2.Cells(a + 3, 2) = "" こういう書き方は、非常に取得が難しいのは、インクリメンタルの増加が、3 です。 たとえば、最終行を設定したら{例:LastRow = Range("A65536").End(xlUp).Row } If LastRow > Sheet2.Cells(a + 3, 2).Row Then  '真の処理 Else  '偽の処理 End If のようなスタイルにしないと、確実性が乏しいように思います。

pansy819
質問者

お礼

早速のご回答ありがとうございます。 初めて、投稿しましたので書き方が足りずに申し訳ございませんでした。 要約した方が良いのかなと、安易な考えでしてしまって… 詳しく書きますと、 見積書の明細を別シートで最初に作ります。 明細のシートは1~10位あって、仕事によってまちまちです。 明細シートのC4~C10までに明細の仕事名が載っていて、そのC4~C10までの内容を見積書表紙シートに飛ばすのですが、飛ばした際に内容が多いと印刷の関係で1ページ目の最終行(A48)に明細が入らないように空欄にして、2ページ目のB53に挿入したいのです。 なんとか自分で直したいとは努力してみましたが、他の人が作られたプログラムなので、自分で作り直そうにも上手くいかず ここで質問させていただきました。 宜しくお願い致します。

関連するQ&A

専門家に質問してみよう