• ベストアンサー

Excelでの行の挿入について

マクロについて教えて下さい。 例えばA1のセルに5と入力した場合に 3行目と4行目の間に5行挿入したいのですが・・・ マクロでなくても出来る方法があればそちらも教えて頂ければ幸いです。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.6

No3&5です。 さっきのだとA1に0以下を入れられるとエラーになってしまいますね。修正しました。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub x = Target.Value If IsNumeric(x) = False Or x <= 0 Then Exit Sub Sheets("Sheet2").Rows("4").Resize(x).Insert Shift:=xlDown End Sub

jun0617
質問者

お礼

大変役に立ちました。 有難うございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (7)

  • quit123
  • ベストアンサー率21% (4/19)
回答No.8

回答を検討し自分で考えることもせず、次から次へと丸投げをするこのような質問者へは、回答をしばし控えるべきではないでしょうか。 質問者のためにもならない。  

jun0617
質問者

お礼

「ために」なりました・・・(^^;

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

私は、merlionXX さんと、ここで競い合っても本意ではないし、途中で条件が変っていくのに着いていくのは困難なので、この一回きりにさせていただきます。 なお、私のコードは、0や負の数や予想外に大きな数値が入ったときのエラーを想定しています。そのために、Integer にして、On Error ではじきだそうとしています。 前回の#4のコードを >   Rows(InitialRow).Resize(intRowNum).Insert _ >   Shift:=xlDown >   'Cells(InitialRow, 1).Resize(intRowNum).Insert _ >   Shift:=xlDown 以下に換えてください。    Sheet2.Rows(InitialRow).Resize(intRowNum).Insert _    Shift:=xlDown    'Sheet2.Cells(InitialRow, 1).Resize(intRowNum).Insert _    Shift:=xlDown

jun0617
質問者

お礼

細かいご指摘有難うございます。

全文を見る
すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

>sheet1のA1のセルに任意の数字を入力すると >sheet2の3行目と4行目の間にsheet1のA1に入力した数>字分だけ、 >行が挿入するにはどうすれば良いでしょうか? 先程のマクロに行(Row)のある場所(Sheet2)を指定してあげるだけでOKです。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub If IsNumeric(Target.Value) Then For n = 1 To Target.Value Sheets("Sheet2").Rows("4").Insert Shift:=xlDown Next n End If End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

>A1のセルに任意の数字を入力した後に、 >マクロを実行するとA1に入力した数だけ行数が増える様にしたいのですが・・・。 つまり、挿入数も、挿入される位置も固定されているということでしょうか?もし、そうでしたら、#3 の merlionXX さんのような、イベント・ドリブン型のスタイルがよいのかもしれませんね。 設定方法は、#1 の時と同じです。 Private Sub Worksheet_Change(ByVal Target As Range)  Dim intRowNum As Integer '挿入される行数  Const InitialRow As Long = 4 '挿入される最初の行  With Target  If .Address <> "$A$1" Then Exit Sub   If IsNumeric(.Value) And .Value > 0 Then    On Error GoTo EndLine    intRowNum = .Value    Rows(InitialRow).Resize(intRowNum).Insert _    Shift:=xlDown    'Cells(InitialRow, 1).Resize(intRowNum).Insert _    Shift:=xlDown   End If  End With EndLine: End Sub 前回と同じように、全体行でないのでしたら、Rows(IntialRow)の前に、「'」を付けて、Cells(IntialRow,1)の前の「'」を外してください。

全文を見る
すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

簡単なマクロです。 A1のセルに任意の数字を入力すると自動的にマクロが走ります。 シートのタブを右クリックして「コードの表示」をし、以下をコピー&ペースト Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub If IsNumeric(Target.Value) Then For n = 1 To Target.Value Rows("4").Insert Shift:=xlDown Next n End If End Sub

jun0617
質問者

補足

有難うございます!!出来ました。 申し訳ありませんが質問を追加させて下さい。 sheet1のA1のセルに任意の数字を入力すると sheet2の3行目と4行目の間にsheet1のA1に入力した数字分だけ、 行が挿入するにはどうすれば良いでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

Sub 行挿入2() Dim r As Long r = Range("a1").Value If r = Empty Then MsgBox "取りやめます.": Exit Sub ActiveCell.Resize(r).EntireRow.Insert Shift:=xlDown 'ActiveCell.Resize(r).Insert Shift:=xlDown '全行でない場合は、EntireRowの入っている方を無効にし、入っていない方を有効「'を外す」にしてください。 End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

まず、マクロを使用しない場合は、 3行目にカーソルを置き、5行を選択して、右クリック-挿入 で、5行挿入されます。 マクロでしたら、 Sub 行挿入()  Dim r As Variant  r = Application.InputBox("挿入する行数を入れてください", Type:=2)  If VarType(r) = vbBoolean Or r = "" Then MsgBox "取りやめます.": Exit Sub  ActiveCell.Resize(r).EntireRow.Insert Shift:=xlDown  'ActiveCell.Resize(r).Insert Shift:=xlDown  '全行でない場合は、EntireRowの入っている方を無効にし、入っていない方を有効「'を外す」にしてください。 End Sub

jun0617
質問者

補足

有難うございます。 マクロを実行した際にウインドウを立ち上げて挿入する行数を指定するのではなく、A1のセルに任意の数字を入力した後に、マクロを実行するとA1に入力した数だけ行数が増える様にしたいのですが・・・。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 「新しいマクロの記録」機能を使っての行挿入

    「新しいマクロの記録」機能を使って1行と2行の間に10行の空白行を挿入後、A13のセルを選択というマクロを作りました(マクロ1とします)。このマクロを実行すると1行と2行の間に10行の空白行が挿入された後、A13が選択されます。ここでもう一度、マクロ1を実行すると1行と12行の間にさらに空白行が10行挿入されA13が選択されます。このようになるのは当たり前と言えば当たり前なのですが、2回目にマクロを実行したときに12行と13行の間に10行の空白行が挿入された後、A24が選択されるようにするには、どのようにマクロを記録すればよいのでしょうか?  ようは、10行の空白行を挿入した後、セルを11行下に移動させるというマクロを作りたいのです。VBAの記述方法はほとんど分からないので「新しいマクロの記録」機能を使うことを前提にご教授ください。

  • エクセル 行の挿入について

    EXCEL2002を使用しています。 行を挿入しようとしましたら、次のようなエラーメッセージがでました。 『データの消失を防ぐため、空白でないセルをワークシートの外にシフトすることはできません。 Ctrl+Endキーを押して最後の空白でないセルに移動し、そのセルとデータを削除、またはクリアしてください。 その後、セルA1を選択し、ブックを保存して最後のセルをリセットしてください。 または、データを新しい位置に移動し、もう一度行ってください』と。 データを入力した後、入力漏れに気がついたので、行の途中に入力漏れしたデータを挿入したいのですが、どのようにすれば、行の挿入ができるでしょうか。 (例えば、1行目から100行目までデータを入力した後に、10行目に新たにデータを挿入したい場合) よろしくご教示願います。 なお、OSはウィンドウズXPです。

  • マクロで行挿入がうまくいかない理由は?

    XPでOFFICE2007です。マクロ未熟者です。 マクロで、行挿入だけであればうまくいきますが、行挿入した後でその行に文字を入力するマクロでは、その行ではなく1行前のセルに文字が入力されてしまいます。 変なことになるのは、マクロを作成する過程で、行挿入が上の書式をコピーすることと関連がありそうなのですが、何に注意すればうまくいくのでしょう。 とりあえず今のところは行挿入を使わずに上の行をコピーして挿入する方法でうまくいっています。しかし行挿入後の文字入力がうまくいかないのか、その理由と対処方法がわかれば教えてください

  • エクセルマクロの行非表示及び挿入

    エクセルマクロの方法について質問です。 今6~70行の中に表(入力項目は3行一体)を作っていてそのEセル(3行の結合セル)に”済”と入力すると3行で一体の行を非表示にし、非表示にしたことで入力行が減ってしまうので、非表示にした後に最後から2つ目の3行一体の行にコピーして行を挿入する構文を教えてください。 なお、最後の行挿入だけはマクロの自動記憶でも出来そうでしたが、その前段階の非表示がどうしてもうまくいきません。

  • 複数行に空白行を一括で挿入したいのですが

    エクセルに関する質問です。 セルA列の14行目から30000行まである数字が入力されています。 各行間に一行ずつ空白行を挿入したのですが マクロを使ったやりかたでもかまいませんので 一括でする方法があれば教えていただけないでしょう?

  • エクセル行の挿入

    excelに行を追加する方法を教えてください! Bにある数からマイナス1行下に挿入したいのです。 1→挿入なし  2→下に1行挿入  3→下に2行挿入 数よりマイナス1行の挿入をしたいのですが、 マクロ、関数など全く分かりません。 以前の質問も見てみたのですが、見当たらないのと、 マクロ?が全くわからないので、 どなたか一から教えていただけないでしょうか? 本当に申し訳ないのですが、お願いします。 Aにkkkk Bに数が入ります。   A | B | C | D ------------------------------------- 1| kkkk   2 ------------------------------------- 2| kkkk   1 ------------------------------------- 3| kkikk   3 ------------------------------------- 4| kkkk   2 ↓行の挿入   A | B | C | D ------------------------------------- 1| kkkk   2 ------------------------------------- 2| kkkk   空白(行の挿入) ------------------------------------- 3| kkikk   1 ------------------------------------- 4| kkkk   3 ------------------------------------- 5| kkkk   空白(行の挿入) ------------------------------------- 6| kkkk   空白(行の挿入) ------------------------------------- 7| kkkk   2 ------------------------------------- 8| kkkk   空白(行の挿入) -------------------------------------

  • エクセルで空白行を挿入するには

    一つの列に200ほどデータがあるとします。 そこで1行おきに空白行を挿入していきたいのですが手でいちいち空白行を挿入していてはらちがあきません。 関数等も含めて、なにか良い方法はないでしょうか。 例 セルA1   セルA2   セルA3 以下続く    ↓   セルA1   空白行(セル)   セルA2   空白行(セル)   セルA3   空白行(セル) 以下続く   といった具合です。

  • エクセルで行を挿入すると式が・・・

    シートを2枚使っています。 シート2にIF関数を使用して、 @IF(Sheet1:A1=”A”,”OK”,””)という式を入力しています。 ここで、シート1の1行目を挿入すると、 式も自動的にA2に変更されてしまいます。 行を挿入しても必ず1行目のA1を参照してほしいのですが、どうすればよいのでしょうか? 新しく入力するときは、行を挿入してシート1のA1に入力します。 絶対セルや範囲名を設定してもうまくいきませんでした・・・。 よろしくお願いします。

  • Excelの行挿入で

    Excelのシートにデータがつまっているのですが(これから新しく表を作るということではないということです。)、行の挿入をしたいのです。 このとき、行を選択して、右クリックで「挿入」を選べば挿入自体はできます。 しかし、 既にある表は、行が、A列とB列が結合されているのですが、 単に上記のように挿入すると、 A列B列が分かれている行が挿入されてしまいます。 新しく挿入された行のA列とB列を選択して、「セルの書式設定」の「配置」でセルを結合させてもいいのですが、 いちいちそうしなくても 挿入時点ですでに結合されているようにするにはどうすればよいですか。 (Excel2000)

  • エクセルマクロで行挿入

    エクセルマクロで行挿入 マクロ初心者です。 仕事で、受注した内容をエクセルで管理しているのですが、頻繁にキャンセルや日程変更があり、1日単位でデータを管理しているものですから、かなりデータ入力に労力が取られている状況です。 キャンセルや日程変更になったデータに関しては、行ごと削除するのではなく、行単位で取り消し線と文字を赤にして、見た目で無くなったということがわかるようにしています。 また、受注したら行を挿入して新しいデータを入力しています。 そこで、赤字で取り消し線にて入力されている行の一つ上の行に挿入、ということをマクロでできないかと思っています。 赤字に取り消し線の行に関しては、何行目になっているかはその日によって違うので、その指定と、書式を指定する方法がわからない状況です。 マクロで上記のことができるのであれば、ご教授いただけると助かります。 宜しく御願いいたします。

専門家に質問してみよう