• ベストアンサー

マクロで行の別シートから追加をする

いくつか探してみたのですが 見つからなかったので教えてください excelでマクロを作成したいのですが その際に行の挿入を行いたいと考えています。 それで、今現在考えている条件が ボタンを作成し、クリックすることによって実行したい 挿入する行数を任意に変更したい これらを別のシートから行いたい(例、sheet1でボタンを設置し、sheet2で実行する) 申し訳ないですが 教えてもらえないでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

#2さんへの補足も含めて、こんな感じかなと思いましたけど、、、 Private Sub CommandButton1_Click() Dim iRow As Long  On Error Resume Next  iRow = Application.InputBox("Sheet2 の10行目から何行挿入する?", "挿入", Type:=1)  Worksheets("Sheet2").Rows(10).Resize(iRow).Insert End Sub 横レスですが、#1さんのマクロは  Sheets("Sheet2").Select  Rows(StartRow & ":" & InsertRow).Select  Selection.Insert Shift:=xlDown の3行を繋げてしまえば良いでしょう。 Sheets("Sheet2").Rows(StartRow & ":" & InsertRow).Insert Shift:=xlDown

kobomac
質問者

お礼

回答ありがとうございます。 できました。 本当にありがとうございました。

その他の回答 (4)

  • jpk1001
  • ベストアンサー率42% (3/7)
回答No.5

すみません。まず別件ですが前記のだと1行余計に挿入されていたかも。 InsertRow = Range("A4").Value + StartRowのところ InsertRow = Range("A4").Value + StartRow - 1にしたほうがよいかもです で、エラーの件ですがちょっとよく分かりません。 マクロ実行とボタンからの実行が違くなるのが理解できません・・ 上記修正前だと両方2ということは挿入行が0行が指定されていることに なるのですがそれでもエラーにはならない気がしますし。 回答できずすみません。

kobomac
質問者

お礼

何度も回答ありがとうございます。 おかげさまでできました。 本当にありがとうございました。

  • jpk1001
  • ベストアンサー率42% (3/7)
回答No.3

こんばんは マクロを実行した『A4セル』に1以上の整数を入れていますでしょうか? 便宜上A4を挿入行数の指定にしています。 StartRow と InsertRowに整数が入っていないとエラーになると思います。 エラー画面が出たら、上記変数にマウスポンタを近づけると値が表示されるので 確認してみてください。

kobomac
質問者

お礼

たびたびありがとうございます。 ツールからマクロを選択して実行できました。 これを、コマンドボタン作成し実行するとエラーになるみたいです。 jpk1001さんがおっしゃられています >StartRow と InsertRowに整数が入っていないとエラーになると思います。 には、それぞれ2が代入されていました。 いろいろご迷惑をおかけしてすいません。 よろしくお願いします。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

なぜこんあんことをするのか、あまり理解できないが (素直にSheet2で行挿入すれば済むことででは?)そういうことを書かないで、回答を求めると、主旨が理解できず、回答が無駄になる場合がある。 ーー Shwwt1にコマンドボタンを1つ設ける。 Sheet1のコマンドボタンの Private Sub CommandButton1_Click() イベントに Private Sub CommandButton1_Click() Sheet2.Select r = Selection.Rows.Count Selection.EntireRow.Insert End Sub を入れる。 ーー >挿入する行数を任意に変更したい どこでどう決める(指定するのか)のか、質問に書いて無くてどうするの? ーー 私の独断で Sheet2で、 (1)挿入する場所から (2)挿入する行数だけ 範囲指定することにした。 それが上記の答えのコード。

kobomac
質問者

お礼

回答ありがとうございます。 ご指摘のとおり言葉が足りず申し訳ありません。 >(素直にSheet2で行挿入すれば済むことででは?)そういうことを書かないで、回答を求めると、主旨が理解できず、回答が無駄になる場合がある。 ご指摘されていますように、確かにsheet2で挿入すればいいのですが できれば、GUI上で処理を行いたいと考えています。 >どこでどう決める(指定するのか)のか、質問に書いて無くてどうするの? 現在の考えでは、 10行目~指定行まで挿入できればと考えています。 その指定はできればテキストボックスに入力して その値分だけ挿入したいと考えています。 よろしくお願いします

  • jpk1001
  • ベストアンサー率42% (3/7)
回答No.1

こんなマクロでどうでしょうか? 色々なやり方があると思いますので一例です。 マクロ内のStartRowで開始行を指定しています 挿入行数は任意とのことなので、とりあえず実行する時のアクティブ シートのA4レンジから取得していますので好きに変更してください Sub Macro1() Dim InsertRow As Integer Dim StartRow As Integer Dim ActSheet As Worksheet Set ActSheet = ActiveSheet StartRow = 2 InsertRow = Range("A4").Value + StartRow Sheets("Sheet2").Select Rows(StartRow & ":" & InsertRow).Select Selection.Insert Shift:=xlDown ActSheet.Select End Sub

kobomac
質問者

お礼

さっそくの回答ありがとうございます。 JavaやC言語は多少いじったことがあるのですが マクロといいますかVBをやったことがないため 初歩的なこともわからない状態です。 jpk1001の回答をそのままコピペをして マクロを実行してみたのですが Range クラスの Select メソッドが失敗しました と返ってきました。 エラーの該当箇所が Rows(StartRow & ":" & InsertRow).Select みたいです。 質問ばかりで申し訳ないですが どのように変更すればいいのでしょうか?

関連するQ&A

  • 任意の1行を選択していないと実行できないマクロ

    教えてください。 任意の行番号をクリックしてまるまる1行選択してから、「切り取る」「別のシートに挿入、貼付ける」というマクロを実行しています。 1行選択していないとそのマクロを実行できないという風にするにはどのようなコードを書けばよいでしょうか? 選択する行番号はその都度違います。 欲を言えば、間違った選択でマクロを実行した時にエラー表示が出ると大変ありがたいのですが… どうかよろしくお願いします。 使用するエクセルは97です。

  • 選択中の行に「行」を挿入するマクロ

    エクセルのいちばん左(1から数字が縦に並んでいるところ)の任意の 数字を選択してその行を全選択しておいた状態でマクロを実行すると、そこに1行挿入するプログラムを教えてください。

  • 非表示行のあるシートにexcel マクロで罫線

    任意に非表示行が含まれているワークシートがあります。 これに罫線を引くのですが、表示行で5行ごとに太い横線にしたいと思います。 含まれる非表示行数によって太線の入る位置が変わってきます。 これをマクロで行うにはどのようにしたらよいのでしょうか。

  • エクセル マクロ 行

    エクセル マクロについて Sheet1にはボタンがあり そのボタンをクリックすると フォームが表示してそのテキストに記入して、記録ボタンを押すと Sheet1最終行のフォームからシートにコピーするボタン方法は出来るのですが・・それだと最終行が新しい記載になってしまいます。 Range("a65536").End(xlUp).Offset(1).Select Selection = Selection.Row - 1 例えば A1 タイトル A2  小項目 A3  挿入させたい! A列の3行目から挿入して、その後も常にA3から挿入したいです。 新しい記載は常にA3にさせたいのですが、どうすれば良いのでしょうか?記述を教えて下さい。

  • EXCEL2010 マクロにつきまして

    excel vbaでマクロが作りたいのですが、まったくの初心者で 試行錯誤していますが、なかなか出来ずに困っています。 どなたか、教えていただけませんでしょうか。 ○sheet1 --日付---|A-B-C -------------------- 2013/1/20|1 2 3 2013/1/21|4 5 6 2013/1/22|7 8 9 2013/1/23|5 4 3 2013/1/24|4 5 6 2013/1/25|4 4 4 2013/1/26   ・   ・   ・ ○sheet2 実行ボタンを作成 日付を入力して実行ボタンをクリックすると指定した日付のデータが抽出される 例 2013/1/22 → 実行 A B C ------- 7 8 9 このようなマクロを組みたいのです。 わかりづらくて申し訳ありません。 また、初心者向けのおすすめの参考書や、ホームページがありましたら 教えて頂けると助かります。

  • EXCELで切り取った行を別シートに挿入

    EXCELである行を選択して切り取り、同一シート内の任意の場所に挿入すると 元の行は自動的に削除されます。 しかし、別シートに挿入した時は、元の行は削除されず、わざわざ その行を削除する、という操作が必要となります。 そこで質問なのですが、別シートへの挿入を一つの操作で行う方法はないでしょうか? また、その方法がない場合、それはEXCELの何らかの仕様を反映しているのだと 思いますが、それはどのようなものでしょうか? よろしくお願いします。

  • excelでシート:何行あるのか

    excelでシート内行数が数千のデータを扱うとき、ぱっと何行あるのか、 或いはぱっと最終行に移動できるとかどちらでもいいが、そのような方法あれば教えて。 マクロを使っても、式を使っても可です。

  • Excelのマクロで別のシートに追加する方法

    入力するためのシート1からデータをためるためのシート2に入力するものをマクロのボタンでできるようにしたいのですがどのようにマクロのVBA打てばいいのか分からないので教えて下さい。 したいことは、データ4列でシート1の1行目は項目の行にして、 2行目にデータを入力する。 入力したデータを切り取って、シート2の2行目に張り付けて 次のデータをシート1の2行目に入力して 同じように切り取って次は3行目、4行目…というマクロ作りたいんです。 どなたかお願いします

  • [エクセル]行の挿入、シート間で連携できますか?

    こんにちわ。 販売管理をエクセルで行っております。 その際にちょっと出来ないかな??と思うことが出てきましたので書き込みました。 たとえば、新規作成のBookでSheet1~3があります。 やりたいことは、 Sheet1の4行目と5行目の間に2行を挿入した場合、連携してSheet2やSheet3の4行目と5行目のように同じ箇所に同じ追加した行数分、挿入されて欲しいわけです。 ちょっと説明が難しいな・・・、言いたいこと伝わってますかね?? これが出来たらすっごい効率Upなんですが・・・出来ませんか??

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

    行挿入マクロを使用した製品管理表を作成しましたが、シートの保護をかけて行挿入マクロを実行すると「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

専門家に質問してみよう