
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を探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VBA】2つのシートの値を比較...
-
Worksheets メソッドは失敗しま...
-
VBAで指定範囲内の空白セルを左...
-
【VBA】オートフィルタで抽出し...
-
VBAを使って検索したセルをコピ...
-
URLのリンク切れをマクロを使っ...
-
VBAで、特定の文字より後を削除...
-
マクロ 最終列をコピーして最終...
-
VBAを用いて条件付きの平均値、...
-
vba 2つの条件が一致したら...
-
VBAのFind関数で結合セルを検索...
-
ExcelVBAで、必要な列を抽出す...
-
【VBA】複数行あるカンマ区切り...
-
cellsプロパティ列名をアルファ...
-
エクセル VBA 条件にあうセルの...
-
Worksheet_Change(ByVal Target...
-
B列の最終行までA列をオート...
-
Excel VBAにおける複数条件での...
-
R言語で読み込んだデータの列名...
-
C# 列の挿入
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
vba 2つの条件が一致したら...
-
Worksheets メソッドは失敗しま...
-
B列の最終行までA列をオート...
-
Cellsのかっこの中はどっちが行...
-
IIF関数の使い方
-
Changeイベントでの複数セルの...
-
【VBA】2つのシートの値を比較...
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
VBAのFind関数で結合セルを検索...
-
DataGridViewに空白がある場合...
-
VBAを使って検索したセルをコピ...
-
文字列の結合を空白行まで実行
-
データグリッドビューの一番最...
-
VBAでのリスト不一致抽出について
-
エクセル 2つの表の並べ替え
-
rowsとcolsの意味
-
【Excel VBA】 B列に特定の文字...
-
VBA 列が空白なら別のマクロへ...
おすすめ情報