質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

994閲覧

行の挿入ボタン作成、行に番号を付ける

321Kurumins

総合スコア18

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/04/21 01:08

イメージ説明
画像の様な表があります。行が足りなくなったら行を挿入するボタンを作成したいと思っています。
条件は以下になります。
・表にはドロップダウンリストなどが組み込まれているのでそれらを残した状態で行を挿入
・1~10など行の番号を付ける
・インプットボックスで指定の行数を挿入
・16行目に挿入(もしくは行の番号が付いているセルの下の行)
おまけ
・できれば1度挿入したあと、その下に挿入できるようにしたい

行番号を付けるところでつまづいています。教えてください。
おまけはできたらすごく助かります。宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2021/04/21 01:33

現状のコードを提示してください。
321Kurumins

2021/04/21 02:21

Sub 行挿入() Dim n As Integer On Error GoTo myError n = InputBox("挿入する行数を入力して下さい") If n >= 1 And n <= 100 Then For i = 1 To n ActiveCell.EntireRow.Insert xlShiftDown, xlFormatFromLeftOrAbove Next i ElseIf n > 100 Then MsgBox "数値が大きすぎます" Else MsgBox "1以上の数値を入力して下さい" Exit Sub End If myError: MsgBox "キャンセルしました" End Sub 今はアクティブセルに行を挿入するようにしています。
hatena19

2021/04/21 02:48

質問は編集できるので、質問の方に追記してください。 その際は、コードブロックにしてもらうと読みやすいです。 コードを選択して、エディター上部の <code> をクリックするとコードブロックになります。
321Kurumins

2021/04/21 05:15

ご指摘ありがとうございます。 まだ使い始めたばかりでよくわかってませんでした。 次からそうします!
guest

回答2

0

ベストアンサー

こんな感じでどうでしょうか。

VBA

1Sub 行挿入() 2 On Error GoTo myError 3 4 Dim n As Long 5 n = InputBox("挿入する行数を入力して下さい") 6 7 If n < 1 Then If MsgBox("1以上の数値を入力して下さい") = vbOK Then Exit Sub 8 If n > 100 Then If MsgBox("数値が大きすぎます") = vbOK Then Exit Sub 9 10 Dim ws As Worksheet 11 Set ws = ActiveSheet 12 13 Dim insRow 14 insRow = ws.Range("A1").End(xlDown).Row 15 16 ws.Rows(insRow + 1).Resize(n).Insert xlShiftUp, xlFormatFromLeftOrAbove 17 ws.Rows(insRow).Resize(2).FillDown 18 ws.Cells(insRow + 1, 1).Value = ws.Cells(insRow, 1).Value + 1 19 ws.Rows(insRow).Resize(2).AutoFill Destination:=ws.Rows(insRow).Resize(n + 1) 20 21 Exit Sub 22myError: 23 MsgBox "キャンセルしました" 24End Sub 25

投稿2021/04/21 15:56

jinoji

総合スコア4592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

321Kurumins

2021/04/22 03:02

回答ありがとうございます。 テーブル設定せず数式もコピーできました。
guest

0

シートのデータは下記のようだと仮定してます。

1行目は項目名、2行目からデータ、1列目は行番号

行番号項目1項目2項目3・・・
1
2
3
  

行番号の次の空白行にInputBoxで指定した行数を挿入。

vba

1Sub 行挿入() 2 On Error GoTo myError 3 4 Dim n As Long 5 n = InputBox("挿入する行数を入力して下さい") 6 7 If Range("A2").Value = "" Then 8 Range("A2").Select 9 Else 10 Range("A1").End(xlDown).Select 11 End If 12 13 Dim i As Long, s As Long 14 s = ActiveCell.Value + 1 15 ActiveCell.Offset(1).Select 16 17 If n >= 1 And n <= 100 Then 18 For i = s + n - 1 To s Step -1 19 ActiveCell.EntireRow.Insert xlShiftUp, xlFormatFromLeftOrAbove 20 ActiveCell.Value = i 21 Next i 22 ActiveCell.Offset(, 1).Select 23 ElseIf n > 100 Then 24 MsgBox "数値が大きすぎます" 25 Else 26 MsgBox "1以上の数値を入力して下さい" 27 Exit Sub 28 End If 29 Exit Sub 30myError: 31 MsgBox "キャンセルしました" 32End Sub

投稿2021/04/21 03:37

hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

321Kurumins

2021/04/21 05:42

ありがとうございます。完璧です。 ただ申し訳ないですが条件をひとつ忘れておりました。 セルに数式が入っている列があります。 数式をコピーして行挿入できますか?
hatena19

2021/04/21 15:54

データ範囲をテーブル化しておくと、挿入すると上の数式を自動でコピーしてくれます。 エクセル 表をテーブルとして書式設定から作成する https://www.tipsfound.com/excel/06101
321Kurumins

2021/04/22 02:44

そうなんですね。あまりテーブルは使ったことがなかったので 勉強になりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問