• ベストアンサー

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

いくつか探してみたのですが 見つからなかったので教えてください 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/17069)
回答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