- ベストアンサー
Excel97で自動的に行挿入させるマクロのつくりかた。
こんにちは。 マクロ超超初心者です。 WN98SE、Excel97です。 やりたいことは、たとえば、 B1に1001 B2に1001 B3に1002 B4に1003 ・ ・ ・ と入っていたとします。 ここで、1001から1002に変わる(又、1002から1003に変わる)とき、その間の行に3行空行を自動的に挿入させたいのですが、どういうマクロの記述をすればできるのでしょうか・・・。 それを新規ブックでもボタンひとつで実行させるにはどのような設定をしたらよいでしょうか。 どなたか教えてください。 よろしくおねがいします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 マクロはこんな感じです。 急いで組んだので、手直しが必要かもしれません。 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 を別の名前にすれば、マクロ名も変わります。 長くなったので、この辺で。
その他の回答 (2)
- GETSTREET
- ベストアンサー率18% (14/74)
こんな感じでしょうか? 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
お礼
回答ありがとうございます。 ほかの方と同様、うまくうごいています。 本当に助かりました(~o~)
- happypoint
- ベストアンサー率36% (521/1422)
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
お礼
回答ありがとうございます! #1さんと同様、できました!! 感謝しています。
お礼
できました!!!! ありがとうございます。 初心者にもわかりやすく感謝しています。 本当にありがとう。