• ベストアンサー

マクロについて

見積書をマクロを使用して作成しています。 項目は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

  • マクロの作成 行の移動

    マクロの作成 行の移動 ワークシート上の指定行を最終行の次へ移動し、移動した後の空白となった指定行を削除するマクロの作り方を教えてください。

  • エクセルのマクロ(指定列の空白にひとつ上の文字を入力し続ける)

    エクセルのマクロを教えてください。 指定列の空白にひとつ上の文字を入力し続けるマクロです。 A列指定 A2からスタートし、1000行くらいあるデータ 空白があった場合ひとつ上の文字を入力 空白は、2行連続・3行連続となることもあるが大抵は1行空白 この場合、空白セルの上で一番近いデータをコピーする A列のデータは、文字・数字・日付と様々 1000行ある場合もあるが、それ以下の場合もあるので、10行空白が続いたらマクロが自動的に終了 エクセル2003使用 よろしくお願いいたします。

  • Excelのマクロについて

    エクセルのまくろについて教えてください。 私が今やろうとしているのはsheet1に表を作成し、sheet2に見積書を作成します。 見積書に載せる項目はsheet1の表の中から抽出したいです。 そのときの条件としては、sheet1での表の中の計算結果が、  項目  計算結果   A    1   B    0   C    8 このような場合のときに計算結果が「0」になったものの項目はsheet2の見積書の項目には反映しないようにしたいです。 このようにするとsheet2での見積書は作成する条件によって行数が変わるようになります。 なので、自動的に見積書の行を増やしたりなくしたりするようなマクロを組みたいのです。 Excel2000です。 長々と書きましたがよろしくお願いします。

  • 空白を埋めるマクロについて

    マクロで教えて下さい! A B C D    ...... 数量 名前 種類 購入者  .... 1  2  あ  A 2    く 3 5 DD 4          まま 5    さ 6          ぱぱ と右は何十項目・下は何千行と項目が続くデータがあります。 この空白に上の文字をコピーし埋めて行くマクロを作成するにはどうしたら良いでしょうか? ただし以下の条件があります。 (1)D列の様に1行目が空白のセルは4行目の様に文字が入っている所までは空白のまま (2)A列はそのファイルにより何行目までデータが入っているかは不明 A B C D     数量 名前 種類 購入者   1  2  あ  A       2  2  く A 3 5 く DD 4  5  く DD   まま 5  5  さ DD まま 6  5  さ DD   ぱぱ 宜しくお願い致します。

  • マクロで、新しいシートを作りたい。

    エクセルのマクロを教えてください。 今は、Sheet1のA2に年月日、B2:H2にコード、項目1、項目2、・・・と入力します。 入力が終わったら、マクロを実行し、その後A2:H2をクリアしています。 今回やりたいのは、マクロの実行時に新しいシートを追加し、A2:H2をコピーしたいのです。 1 Sheet1のA2から、年月を取り出す。2003/1/1→200301 2 シートの中に、Sheet200301が有るかどうか調べ、無かったらSheet200301というシートを作る。 3 新しいシートを作ったら、Sheet4のA1:Z2をSheet200301に貼り付ける。 4 Sheet200301の最後の空白行を調べる。(新しいシートを作って最初は2行目になってもらいたい) 5 4で調べた空白行を次の行に貼り付ける。 6 4で調べた空白行にSheet1のA2:H2を貼り付ける。 7 Sheet1のA2:H2をクリアします。 よろしくお願いします。

  • データ変換マクロ

    数値データのシートがあります。 A列に空白があった場合、その行のEとFのセルをコピーして1行上のEとFのセルにコピーしたいというマクロを作成しています。 全部で100行ほどのデータに、いくつか空白セルがあって規則性はありません。空白セルのある行はすべてが対象となります。 空白を見つけた後、「その行のEとFのセル」という指定の仕方で詰まってしまいました。 良い方法をおしえてください。

  • マクロ言語の意味

    エクセルのマクロの書き込みに、If Target.Row=6 Thenとあります。行や列に関係したことでしょうか? 教えてもらった転記のマクロなのですが、縦に項目を入力して行くと別のシートの座標を探して入力するものです。項目を横に入力して行くマクロに書き換えると多くの書き込みが出来て便利です。現在、四苦八苦しています。分かる方助けて下さいお願いします。

  • 保護をかけているシートでマクロが実行できない

    行挿入マクロを使用した製品管理表を作成しましたが、シートの保護をかけて行挿入マクロを実行すると「RangeクラスのInsertメソッドが失敗しました」と出ます、シートの保護を外すと実行されます。保護をかけたシートはマクロを実行できないのか、マクロ文が間違っているのかわかりません。ご教授下さい。 表は抜粋ですが以下のとおりで、15行目に行挿入マクロを実行する表作成のマクロです。 E15にはIF文が含まれています。       A     B      C       D      E       F 14    空白  納入日  使用日  納入数量  使用数量   使用m 15 マクロ文は、以下のとおりです Sub 行挿入() ' 行挿入 Macro m = Cells(15,5).Formula Range("A14:G15").Insert copyorigin:=xlFormatFromRightOrBelow Cells(15,5) = m End Sub

  • マクロのつくり方がわかりません。

    以下はEXCELです。 A1のabcを同ブロックの13-07-31の 下(A5)にコピーするマクロをつくりたいのですが。 A7はA9にしたい。 -------A--------B 1-----abc------123 2---13-07-01--(空白)- 3----(空白)----456 4---13-07-31--(空白)- 5----(空白)---789 6-------空白行------- 7-----abc------123 8---13-07-31--(空白)- 9---(空白)---789 10-------空白行------- 以下続きます。

  • エクセルでマクロの作成

    a列の1行目が『No』の項目名以下の行が空欄になっています。 b列に『あ』があれば同じ行のa列を空白にして、次のb行が空欄であれば同じ行のa列に1の数字を、b列の空白行に対しa列には連続番号が入るようにしたいのですが、マクロがどうしてもうまくできません。 どなたか、初心者向けに解りやすい解説と実際のマクロを教えていただけませんか? 初心者でうまく説明できてないかもしれませんがよろしくお願いします。