• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルマクロで行挿入)

エクセルマクロで行挿入の方法

このQ&Aのポイント
  • エクセルマクロを使用して、特定の条件に基づいて行を挿入する方法について質問します。
  • A列に5桁コードがあり、そのコードの頭文字が「1」から「2」に変わる箇所に行を自動的に挿入したいです。
  • マクロの記録を使用して検索を行い、挿入の指定場所を特定しようとしましたが、エラーが発生しました。どのようにすれば良いでしょうか?

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

  • ベストアンサー
  • u_marine
  • ベストアンサー率52% (38/73)
回答No.1

簡単ですがこんな感じでいかがでしょうか? ちなみに、テーブルの1行目は見出し行と仮定して、 2行目から処理を開始しています。 Sub Macro1() '変数のセット(開始行2行目) i = 2 'A列の値が空白になるまで処理を繰り返す Do While Cells(i, 1).Value <> "" 'i行が"1"かつi-1行が"2"のときの処理 If Left(Cells(i, 1).Value, 1) = "2" And _ Left(Cells(i - 1, 1).Value, 1) = "1" Then '行挿入 Rows(i & ":" & i).Select Selection.Insert Shift:=xlDown End If '処理行数をカウントアップ i = i + 1 Loop End Sub

paranoia135
質問者

お礼

ご回答ありがとうございました。 なりたいカタチになりました。

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

>この5桁コードの頭文字が「1」から「2」に変わる所に一行挿入させたいです このセルは1箇所ですよね。 マクロ記録を書き換えていませんか?下のようにすれば動くはずです。 Columns("A:A").Select Cells.Find(What:="2????", After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False).Select Selection.EntireRow.Insert

paranoia135
質問者

お礼

ご回答ありがとうございました。 コピぺで実行したところ1行目に空白行ができました。 やりたいことと少し違っていました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

結果として#1のご解答と似てしまいました。 for ,next でやろうとしたが,最終を動かすのが上手く行かなくてgotoで凌ぎました。A列にコードがあると仮定。 Sub test01() Sheet1.Activate '-------- a = Cells(1, "a") s = Trim(Str(a)) m = Mid(s, 1, 1) 'mは1行前のキー i = 1 '--------- p01: If Cells(i, "a") = "" Then GoTo p02 '---本行のキー作成 a = Cells(i, "a") s = Trim(Str(a)) k = Mid(s, 1, 1) MsgBox k & "=" & i '----キーが前行に比べ変ったか If m <> k Then Rows(i).Select Selection.EntireRow.Insert d = d + 1 '1行増えると終わりの行(数)は1増える End If '-----本行のキーを次行処理へ渡すためmに入れる m = k i = i + 1 GoTo p01 p02: End Sub ---------- (1)私の経験から、習い始めはFindを使うのは難しい。    特に2つ目以降を見つける処理。    ワイルドカードも、使えたかどうかうろ覚えです。 (2)行挿入・削除も、処理すべき最終行が動くので、プログラムを組むのに注意が要るので、勉強をはじめるのに「適当な分野でない」と思っています。 (3)ForNext,DoWhileなど、全行を繰り返し、見ていく ロジック(総なめ法)をまず身につけるべきと思います。 コンピュター処理が早くなったので、処理時間は気にする 必要がなくなりました。1本釣りで見つけるロジックの方法(例えばFind)の方が難しいのですよ。

paranoia135
質問者

お礼

ご回答ありがとうございました。 コピペで実行したところ「実行時エラー'13'型が一致しません」 4行目「s = Trim(Str(a))」が黄色くなりました。 何がいけないのかよくわかりませんが求めていたものにはなりませんでした。

関連するQ&A