![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
VBAを始めた初心者です。
Exel2002使用です。
VBAでA列の4行目から10行目に行の挿入をできるようにしようと下記のように書きましたが、Rows("i:i").Selectの部分でデバックがかかってしまいます。間違っている理由がわからないのですがよろしくお願いします。
また、DO While Loopステートメントを使ってA列が空白になるまで(例えばA4セル以下の)行を挿入とする場合の方法も教えていただけましたら幸いです。
Sub 4行目から10行目まで()
Dim i As Integer
For i = 4 To 10
Cells(i, 1).Value = i
Rows("i:i").Select
Selection.Insert Shift:=xlDown
Next i
End Sub
Sub 4行目から空白になるまで()
Dim i As Integer
Range("A4").serect
Do While activecell.value = ""
Cells(i, 1).Value = i
Rows("i:i").Select
Selection.Insert Shift:=xlDown
activecell.offset(1,0).select
Loop
End Sub
No.4ベストアンサー
- 回答日時:
もう一つの質問もやっと理解できました。
ちょっと変形します。
A列の4行目から連続して入っているデータに1行挿入します。
Sub 四行目から空白になるまで()
Dim i As Integer, x As Integer
x = Range("A4").End(xlDown).Row
For i = x To 5 Step -1
Rows(i).Select
Selection.Insert Shift:=xlDown
Next i
End Sub
shishishishiさま、両方とも完璧です。ありがとうございました。
ちょっとまだ私には
x = Range("A4").End(xlDown).Row
の部分が難しいのですが、勉強して習得します。
ホントにありがとうございました。
今後ともよろしくお願いします。
No.5
- 回答日時:
それは4行目に空行を加えると元4行目が5行目に移るからです。
Sub 四行目から10行目まで()
Dim i As Integer
For i = 4 To 10
Cells(i + (i - 4), 1).Value = i
Rows(i + (i - 4)).Select
Selection.Insert Shift:=xlDown
Next i
End Sub
Sub 四行目から空白になるまで()
Dim i As Integer
i = 4
Do Until Cells(i + (i - 4), 1).Value = ""
Cells(i + (i - 4), 1).Value = i
Rows(i + (i - 4)).Select
Selection.Insert Shift:=xlDown
i = i + 1
Loop
End Sub
としてみてはどうせしょう。
ちなみに一部にセルの値を書き換える部分がありますがこちらもひょっとしたら?と思って書き換えました。意図が違っていたらごめんなさい。
あと、 (i + (i - 4)) は (2 * i - 4) でも問題ないはずです。
mousengokeさん、早速のご回答ありがとうございます。
Cells(i + (i - 4), 1).Value = i
のところでもともとの挿入行の数字にかわってしまいますね。質問が不明確でもうしわけございません。
なるほど、cellsプロパティの設定の方法が参考になりました。なかなか一ひねりしないと思うように動いてくれないところに苦しんでますががんばって勉強します。
今後ともよろしくお願いします。
ありがとうございました。
No.3
- 回答日時:
これでいいですか?
Sub 四行目から10行目まで()
Dim i As Integer
For i = 10 To 5 Step -1
Rows(i).Select
Selection.Insert Shift:=xlDown
Next i
End Sub
No.2
- 回答日時:
Sub 四行目から10行目まで()
Dim i As Integer
For i = 4 To 10
Cells(i, 1).Value = i
Rows(i).Select
Selection.Insert Shift:=xlDown
Next i
End Sub
でどうですか?
またマクロ名の頭に数字は使えません。
二番目は質問の意味不明です。
この回答への補足
shishishishiさまありがとうございます。
#1のsoma3さんの補足欄に記入させていただきました通りの結果となります。
#1さんと違ったところは実行が終わった後、A列に「10」がされた1行が挿入されることでした。(今回の場合A11セル+A12~A17、#1さんの場合、A11~A16のA11セルの文字が10に変更されてしまう)
質問2の意味はA列に連続して(文字が)入力されている場合に、入力されているセルが終わるまで(セルが空白になるまで)1行ずつ空白の行を挿入したいとの意です。
どうかよろしくお願いします。
No.1
- 回答日時:
デバックがかかってしまう
Rows("i:i").Select
の部分についての説明ですが、
これは""で囲まれてしまっているため、
文字列[i:i]と認識されてしまってるんだと思います。
Dim i As Integer
For i = 4 To 10
Cells(i, 1).Value = i
Rows("i:i").Select
Selection.Insert Shift:=xlDown
Next i
の部分を
Dim i As Integer
Dim strRow As String '' 追加
For i = 4 To 10
Cells(i, 1).Value = i
strRow = i & ":" & i '' 追加
Rows(strRow).Select '' 変更
'Rows("i:i").Select '' 削除
Selection.Insert Shift:=xlDown
Next i
以上でエラーはなくなります。
この回答への補足
すいません!!質問の仕方が悪く少し間違ってました。
4行目から10行目の各行に1行ずつ挿入したかったのですが・・・
行
4 ABC
5 ABC
6 ABC
・・・
を下記のように
4 ABC
5 (空白の行)
6 ABC
7 (空白の行)
8 ABC
9 (空白の行)
・・・
ご指摘いただきました方法ですと
4 (空白の行)
5 (空白の行)
6 (空白の行)
7 ABC
8 ABC
9 ABC
・・・
となってしまいます。
それと、多分最後のNext i のせいだと思うのですが、
挿入されたあと、もともとのA4セルが「10」に変更されて実行されてしまします。(#2さんとの違うところ)
また、2個目の質問は上記のような作業をでセルの範囲指定をA列が空白になるまで1行ずつ挿入したいとの意味なのですが、わかってもらえますでしょうか??
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) Excelマクロ Application.Run 5 2023/06/17 15:16
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
B列の最終行までA列をオート...
-
マクロ 最終列をコピーして最終...
-
vba 2つの条件が一致したら...
-
Worksheets メソッドは失敗しま...
-
VBAを使って検索したセルをコピ...
-
Cellsのかっこの中はどっちが行...
-
文字列の結合を空白行まで実行
-
Excelで、あるセルの値に応じて...
-
IIF関数の使い方
-
rowsとcolsの意味
-
targetをA列のセルに限定するに...
-
【VBA】2つのシートの値を比較...
-
VBA 何かしら文字が入っていたら
-
vba 重複データ合算
-
エクセルVBAで『A列』に新...
-
データグリッドビューの一番最...
-
重複データの合算(VBA)
-
URLのリンク切れをマクロを使っ...
-
VB.NETのDataGridで、選択行の...
-
VBAのFind関数で結合セルを検索...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
マクロ 最終列をコピーして最終...
-
VBAを使って検索したセルをコピ...
-
データグリッドビューの一番最...
-
URLのリンク切れをマクロを使っ...
-
VBAのFind関数で結合セルを検索...
-
【VBA】2つのシートの値を比較...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
Excel(M365) Vlookup/セル反転(...
-
VBA指定行削除
-
VBAでのリスト不一致抽出について
-
C# dataGridViewの値だけクリア
-
Changeイベントでの複数セルの...
-
VBAで、特定の文字より後を削除...
-
rowsとcolsの意味
おすすめ情報