• ベストアンサー

マクロについて

見積書をマクロを使用して作成しています。 項目は30行。 (1)IFを使用し追加行の指定をして指定行を空白に以下を1行ずつ移動 させたい場合、どのように指定すればよいですか。 例えば、10行書き込みをして、あとから8行目に追加をしたい場合、 8-10行目を、9-11行目に移動して、8行目を空白にするという感じです。 (2)また、同じく、見積書で項目30行の中で空白が2行あったら「以下余白」の 文字を入れたいと思っています。 この2点についてマクロの作成を教えてください。

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

  • ベストアンサー
  • nonamochi
  • ベストアンサー率62% (228/365)
回答No.3

こんばんは ちょっとやっつけですが、こんな感じでしょうか。 直前の行をそっくりコピーして、貼り付けています。 書式のみの貼り付け、計算式のみの貼り付けなどもできます。 Gyo = InputBox("挿入する行番号を入力") If Gyo > 1 And Gyo < 30 Then Range("A" & Gyo).Select Selection.EntireRow.Insert Range("A" & Gyo - 1).EntireRow.Select Selection.Copy Range("A" & Gyo).EntireRow.Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Range("A" & Gyo).Select End If

mu-hitsuji
質問者

お礼

ありがとうございました。 直前行には文字・数字が入るので最終行をコピーしてやってみました。

その他の回答 (2)

  • nonamochi
  • ベストアンサー率62% (228/365)
回答No.2

おはようございます 対象とするワークシートの詳細が不明なため、こちらで勝手に判断しています。 対象とするセル、文言、条件判定はワークシートに合った形に修正してください。 また、「以下空白」についても、ワークシートの内容が不明なので、各行の内容を調べています。詳細がわかればもう少しすっきりできるかもしれません。 1. 行挿入 Dim Gyo As String Gyo = InputBox("挿入する行番号を入力") If Gyo > 1 And Gyo < 10 Then Range("A" & Gyo).Select Selection.EntireRow.Insert End If 2. 以下空白 Dim Find1, Find2 As Boolean Dim info As String Dim Gyo, LastGyo As Integer Find1 = False Find2 = False Gyo = 1 LastGyo = 30 Do While Find2 = False And Gyo <= LastGyo info = Range("A" & Gyo).Value If info = "" Then If Find1 = True Then Find2 = True Else Find1 = True End If Else If Find1 = True Then Find1 = False End If End If Gyo = Gyo + 1 Loop If Find2 = True Then Range("B" & Gyo).Value = "以下余白" End If

mu-hitsuji
質問者

補足

ありがとうございました。 更になんですが、 1について、挿入したセルは上の書式や計算式を引き継ぎが出来ればと思っています。 例えばA1-E3を結合したい場合 Range("A1:E3").Merge ですが 今回挿入した際にA-E列を結合したい場合 Range("A" & Gyo:"E" & Gyo).Merge ではダメですよね。 挿入した上の書式や計算式を挿入セルにコピーする方法もありませんか? よろしくお願いします。

  • nonamochi
  • ベストアンサー率62% (228/365)
回答No.1

おはようございます 1)についても2)についても実現の仕方はいろいろとあります。書かれた内容だけでは判断が出来ないので・・ 1)について 行の挿入が必要かどうかのきっかけはどの様にしますか? ボタンを1つ作っておいて、そのボタンを押すと何行目に行を挿入するかを聞くウィンドウが開く様にしますか? 挿入したい行にセルを移動し、ボタンを押すと行を挿入すると言う事もできます。 2) について これもきっかけはどうしますか? 全部入力が終わった時点で判断しますか? それとも入力中から絶えず判断しますか?

mu-hitsuji
質問者

補足

1について、ボタンを作って、何行目に挿入するかをウィンドウ表示にしたいと思っています。 2について、印刷をする時にボタンを使用して2部印刷をするように設定をしたので、印刷の際に表示できればいいのかなと考えています。 こんな感じで、よろしくお願いします。

関連するQ&A