• ベストアンサー

Excel97で自動的に行挿入させるマクロのつくりかた。

こんにちは。 マクロ超超初心者です。 WN98SE、Excel97です。 やりたいことは、たとえば、 B1に1001 B2に1001 B3に1002 B4に1003    ・    ・    ・ と入っていたとします。 ここで、1001から1002に変わる(又、1002から1003に変わる)とき、その間の行に3行空行を自動的に挿入させたいのですが、どういうマクロの記述をすればできるのでしょうか・・・。 それを新規ブックでもボタンひとつで実行させるにはどのような設定をしたらよいでしょうか。 どなたか教えてください。 よろしくおねがいします。

  • 48kg
  • お礼率95% (110/115)

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

  • ベストアンサー
  • yomo3
  • ベストアンサー率32% (88/269)
回答No.1

こんにちは。 マクロはこんな感じです。 急いで組んだので、手直しが必要かもしれません。 Sub Macro1() Const NowCol=2 'B列 Const InsRows=3'3行挿入 Dim NowRow Dim NowVal,PreVal PreVal=Range("B1") NowRow=1 Do NowRow=NowRow+1 NowVal=Cells(NowRow,NowCol).Value If NowVal=0 Then Exit Do If PreVal<>NowVal Then Rows(NowRow &":"&NowRow+InsRows-1).Select Selection.Insert xlDown PreVal=NowVal NowRow=NowRow+InsRows-1 End If Loop End Sub 新規ブックでも使えるようにするには、 PERSONAL.XLS にマクロを保存します。 まず、ツール→マクロ→Visual Basic Editor でマクロ編集モードにします。 プロジェクトウインドウで、PERSONAL.XLSのVBAProjectを探してください。 PERSONAL.XLSがなかったら、イルカ君に聞いてみてください。確か、Excelのフォルダから読み込むはずです。 モジュールというフォルダアイコンのようなアイコンを右クリックして、挿入→標準モジュールでモジュールフォームを開いて、上記マクロをコピペしてください。 保存すれば、このマクロは新規ブックでも使えます。 ボタン一発で使えるようにするには、メニューやショートカットに登録すればOKです。 ちなみに、マクロ名は、Macro1 になっています。 上記コードの Sub の後の Macro1 を別の名前にすれば、マクロ名も変わります。 長くなったので、この辺で。

48kg
質問者

お礼

できました!!!! ありがとうございます。 初心者にもわかりやすく感謝しています。 本当にありがとう。

その他の回答 (2)

  • GETSTREET
  • ベストアンサー率18% (14/74)
回答No.3

こんな感じでしょうか? Sub SAMPLE() ROW% = 1 Do While Cells(ROW, 2).Value <> "" If Cells(ROW, 2).Value = Cells(ROW + 1, 2).Value Then ROW = ROW + 1 Else Rows(ROW + 1 & ":" & ROW + 3).Insert ROW = ROW + 4 End If Loop End Sub

48kg
質問者

お礼

回答ありがとうございます。 ほかの方と同様、うまくうごいています。 本当に助かりました(~o~)

  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.2

48kgさん、こんにちは。 次のマクロでどうでしょうか。 B列に入っているデータをもとに、行挿入を繰り返します。 F11キーでVBE(コードエディタ)を立ち上げ、 標準モジュールに貼り付けてください。 ボタンひとつ、というのはシート上に貼り付けるボタンでいいのでしょうか。 でしたらメニューから、  表示-ツールバー で、「フォーム」を選択し、「フォーム」ツールバーを出してください。 そのなかに、ボタンがありますので、 これをクリックして、シートにボタンを描画します。 すると、「マクロの登録」画面がでますので、 これで「test」マクロをボタンに登録してください。 Option Explicit Sub test() Const lngCol As Long = 2 'B列をさがす Dim lngRow As Long Dim varVal1 As Variant Dim varVal2 As Variant '初期化 lngRow = 1 'ループ Do While Cells(lngRow, lngCol).Value <> ""  varVal1 = Cells(lngRow, lngCol).Value  varVal2 = Cells(lngRow + 1, lngCol).Value  If varVal1 <> varVal2 Then   Rows(lngRow + 1 & ":" & lngRow + 3).Insert '3行挿入   lngRow = lngRow + 3  End If  lngRow = lngRow + 1 Loop End Sub

48kg
質問者

お礼

回答ありがとうございます! #1さんと同様、できました!! 感謝しています。

関連するQ&A

  • エクセルの行挿入とコピー

    よろしくお願いいたします。     A    B   C    D 1  123  123   123   123 2   444  555   666  777 3   890   890   890   890 4   000   000   000   000 上のようなエクセルの表(Excel2003)があるとします。 この表の1行目と2行目の間に、1行目のデータを9行コピーするための方法を教えてください。 実行後は1~10行目は全く同じデータ、11~20行目に2行目のデータがあり、同じように末尾行まで繰り返すということです。 自分でも色々と検討してみましたが、なかなかうまくいきません。 行挿入だけであればできるのですが、コピーまで同時に実行する必要があります。 元の表は3000行ほどあるため、とてもじゃありませんが手動では実行できませんので、マクロで末尾行(Excel2003の65000行)まで自動実行する方法を教えていただきたいのです。 すみませんがよろしくお願いいたします。

  • 「新しいマクロの記録」機能を使っての行挿入

    「新しいマクロの記録」機能を使って1行と2行の間に10行の空白行を挿入後、A13のセルを選択というマクロを作りました(マクロ1とします)。このマクロを実行すると1行と2行の間に10行の空白行が挿入された後、A13が選択されます。ここでもう一度、マクロ1を実行すると1行と12行の間にさらに空白行が10行挿入されA13が選択されます。このようになるのは当たり前と言えば当たり前なのですが、2回目にマクロを実行したときに12行と13行の間に10行の空白行が挿入された後、A24が選択されるようにするには、どのようにマクロを記録すればよいのでしょうか?  ようは、10行の空白行を挿入した後、セルを11行下に移動させるというマクロを作りたいのです。VBAの記述方法はほとんど分からないので「新しいマクロの記録」機能を使うことを前提にご教授ください。

  • エクセルのマクロ(行を挿入し連番を振る)

    ボタンを押すと以下のことを実行するマクロを作成することはできますか? A列2行目から 書類a 書類b 書類c 書類d 書類e C列2行目から 5 3 2 4 3 と入っています。C列は各書類の枚数です。 ボタンを押すと書類aと書類bの間に4行空白行が挿入され、A列とC列は増やした4行にそれぞれ書類a、5がコピーされ、B列には2列目から6列目まで1.2.3.4.5と連番が振られる。 というマクロです。 B列C列で1/5 2/5 3/5 4/5 5/5 であるという表現がしたいのです。(/は入りません) 書類が1枚の場合はB列C列共に空白で1/1とは入りません。 C列に入る書類の枚数により行が挿入されその書類の枚数分の連番が振られるようなマクロが作りたいです。 毎日何百行も手作業で挿入しコピーし連番を振る作業をしています。 決まった行数を増やすとか上の行をコピーするマクロならわかるのですが、C列の値を見て挿入する行数を判断するようなマクロができるのかわかりません。 どなたか教えて頂けないでしょうか。

  • Excel VBA で行挿入

    Excel2002を使っています。 質問させていただきます。 VBAで行を挿入したいのですが、たとえば以下のようにデータがあります。  A列  東京  東京  東京  大阪  大阪  名古屋 予めデータはソートされています。 この状態で、東京と大阪の間、大阪と名古屋の間に1行挿入(空行)したいです。 コマンドボタンをクリックしたときの動作の一つとして実現したいのですが方法がわかりません。 ご指導いただければ幸いです。

  • excel で自動で行を挿入する

    マクロ、関数等を使って、 1行ごとに指定行を挿入することは可能でしょうか? たとえば、以下のようデータがあった場合。 1行AAA 2行BBB 3行CCC これに3行挿入マクロ(関数)を実行した場合 以下のようになる感じです。 1行AAA 2行 3行 4行 5行BBB 6行 7行 8行 9行CCC

  • EXCEL VBA伝票行NOを自動挿入したい

    お世話になります。 下記のようにA列に伝票NOが記述されているExcelデータがあります。 [行NO]というボタンを作成してボタンをクリックすすると、その横B列に伝票NOに応じた行NOを自動で付与するVBAロジックを作りたいと思っています。 毎回手で入れているため時間がかかって困っています。 初心者のため勉強もかねてどなたかご教示いただけますでしょうか。 環境 Excel2013 伝票NO 伝票行 10000 1 10000 2 10225 1 10336 1 10336 2

  • Excelのマクロで、開いた時に、行と日付が入るようにしたい

    教えてください。WinXP、Excel2000を使って、A1に日付、B1に記録をつけていて、枠線で囲んで、毎日記録しているのですが、一回一回、行を挿入するのが大変なので、マクロもしくはVBAで、ファイルを開いた瞬間に、自動的に1行挿入され、かつAの列に、その当日の日付が入るようにするにはどうしたらよいでしょうか?

  • Excel(エクセル)行挿入SAM自動計算

    Excel(エクセル) SAMで1行目から10行目の合計を出していて、10行目以降に行を挿入して自動的に1行目から11行目の合計が出るように設定したいです。 ※元から空白のセルを入れておくことはしたくありません。 ※マクロやVBAは使えません。初心者です。 例 : (A1) 200 (A2) 100 (A3) 200 ←後から挿入した (A4) 合計 300 ←自動的に500になって欲しい 宜しくお願いいたします。

  • excelのマクロで条件による行の挿入

    列AとBがあり列Aに学校のクラス名A組、B組、C組・・・(20クラスほど)と氏名が 入るエクセルシートがあるのですが 先頭行はA組から始まり5行区切りで数え、(A組も5行のうちに入る) その5行内に次のB組が入らないように空白行を挿入したいです もし、5行以内にB組がない場合、次の5行でまたB組があるか判定しなければ氏名5つ あれば空白をいれてというのを20クラスぶん作るマクロは可能でしょうか? VBAの知識がさっぱりないので途方にくれています。 元のデータの例   マクロ実行後 列A   列B      列A   列B A組           A組   氏名1 111      氏名1 111  氏名2 222      氏名2 222 B組           空白行挿入 氏名3 333      空白行挿入 氏名4 444      B組 氏名5 555      氏名3 333 氏名6 666      氏名4 444 氏名7 777      氏名5 555 C組 氏名6 666              氏名7 777              空白行挿入              空白行挿入              空白行挿入              空白行挿入              C組  

  • EXCEL VBA 自動で8行毎に行を挿入したい

    お世話になります。 添付左図のような表があります。 この表をボタンをクリックしたら右図の表の様にするためのVBAロジックをご教授いただけませんでしょうか?(右図の黄色部分の行を自動で挿入したいのです) この表は担当者一人に対して売上区分というものをA-Hまで設けているため、一人のデータが必ず8行になります。 担当者数は現在は100名程度ですが、その都度変わるため可変にしたいです。 この担当者毎に8行あるデータを、ボタンを押したら新規に下行を挿入して[A+B]、続けて下行を挿入して[C+D]、[E+F]、[G+H]という具合に行を挿入する動作を全担当者のデータに全てに対して実施したいのです。 どなたかご教授いただけますでしょうか? よろしくお願い致します。 環境 windows XP SP3 Excel2003

専門家に質問してみよう