• ベストアンサー

Excel 2010 -ボタン押下時、行挿入-

いつも皆様の質問や回答を拝見し、Excelの勉強をさせていただいている者です。 今回、画像添付のようなシートがありコマンドボタンを押したときにA1行をコピー・ コマンドボタンがある位置を取得し、その行にコピーした行を挿入したいと考えております。 行をコピーし挿入するVBAは解るのですが、コマンドボタンが押された時にボタンの行位置を 取得する方法を調べることが出来ませんでした。 ちなみにコマンドボタンは全部で20個位あります。 皆様の知恵をお借りしたく質問させていただきました。 よろしくお願いします。

この投稿のマルチメディアは削除されているためご覧いただけません。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

あぁ、ActiveXコントロールのコマンドボタンじゃなくてフォームコントロールのボタンでしたか。 まず、プロパティ名で使用されている「row」などの名前を変数名に使うのはやめましょう。無用なトラブルの元です。 また、提示されたコードでは Range(row).Activate の箇所でエラーになりませんか? ここは Rows(row).Activate のコピペミスでしょうかね。 ちょっと書き直してみました。これでどうでしょう。 Sub Sample()   Dim nRow   nRow = ActiveSheet.Shapes(Application.Caller).TopLeftCell.row   Rows(3).Copy   Rows(nRow).Insert Shift:=xlDown End Sub

dest0nias
質問者

お礼

mt2008様、ありがとうございます。 おかげ様でやりたい事が出来るようになりました。

その他の回答 (1)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

例えば、こんな感じでボタンの左上に位置するセルの行を取得できます。 CommandButton1.TopLeftCell.Row

dest0nias
質問者

補足

現在のコードです Dim row 変数宣言 row = ActiveSheet.Shapes(Application.Caller).TopLeftCell.row 行番号を変数rowに代入 MsgBox row 確認のため取得行番号を表示 = コピーする行は常にこの行です = Rows("3:3").Select コピーする行を選択 Selection.Copy 選択行をコピー Rows(row & ":" & row).Select  Range(row).Activate 取得した行番号をアクティブにする Selection.Insert Shift:=xlDown コピー行の挿入 以上のコードでA3行をコピー・ボタンが押された行に コピー行を挿入できると考えていたのですが、上手く 動きません。 例えば20行目にボタンを作成し、上記マクロを登録 し実行すると3行目から挿入されてしまいます。 よろしければ解決方法をご教授頂けますでしょうか?