Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6102 / 13645 ツリー ←次へ | 前へ→

【47207】上下のセルが違ったら間に行を挿入したいのです Wz 07/3/5(月) 14:28 質問[未読]
【47217】Re:上下のセルが違ったら間に行を挿入した... Kein 07/3/5(月) 15:26 回答[未読]
【47219】Re:上下のセルが違ったら間に行を挿入した... Wz 07/3/5(月) 15:39 お礼[未読]

【47207】上下のセルが違ったら間に行を挿入したい...
質問  Wz  - 07/3/5(月) 14:28 -

引用なし
パスワード
   お世話になります。

以下のような表があり、A列の各分類の間に小計のための空行をいれたいと思っています。

分類 価格
AAA  100
AAA  100
BBB  300
CCC  500
CCC  500
CCC  500
DDD  250

そこで以下のようなマクロを組んだのですがうまく動作してくれず
ループに陥ってしまうようなのです。
また分類には稀に1行だけのものもあり、End(xlup)ではうまく動作しない気がしています。
なんとかマクロを完成させたいのでアドバイスよろしくお願いします。
-------以下ソース---------------

Sub 小計作成()

Un1 = Range("A2")
  
  Dim UnitRow As Range
  For Each UnitCrm In Range(Range("A1"), Range("A65536").End(xlUp))
    If UnitCrm.Offset(1) = Un1 Then
    Else:
      挿入行 = UnitCrm.Row + 1
      Rows(挿入行).Insert
      Exit For
    End If
  Next

Do Until i = 20
Set Un2 = Range("A65536").End(xlUp).End(xlUp)
  Dim UnitRow2 As Range
  For Each UnitCrm2 In Range(Un2, Range("A65536").End(xlUp))
    If UnitCrm2.Offset(1) = Un2 Then
    ElseIf UnitCrm2.Offset(1) = "" Then
    Else:
      挿入行2 = UnitCrm2.Row + 1
      Rows(挿入行2).Insert
      i = i + 1
      Exit For
    End If
  Next
Loop

End Sub

-------------ここまで-----------------
※分類は多くても20種類くらいなので、20回ループしたら止まるようにしているは ずですがESC押すまでとまらないような感じです(汗)

【47217】Re:上下のセルが違ったら間に行を挿入し...
回答  Kein  - 07/3/5(月) 15:26 -

引用なし
パスワード
   >A列の各分類の間に小計
ならばマクロを組まなくても、メニューの「データ」「集計」で簡単に出来ます。
あえてマクロで行を挿入するなら、以下のようなコードが一般的でしょう。

Sub InS_R()
  Dim i As Long
 
  For i = Range("A65536").End(xlUp).Row To 3 Step -1
   If Cells(i, 1).Value <> Cells(i - 1, 1).Value Then
     Rows(i).Insert xlShiftDown
   End If
  Next i
End Sub

>1行だけのものもあり、End(xlup)ではうまく動作しない気がしています
ロジックがおかしいから、うまくいかないだけではないのかな ?
処理対象の最大入力行を求めることは、おそらくどんなコードでも必要
かと思いますが。

【47219】Re:上下のセルが違ったら間に行を挿入し...
お礼  Wz  - 07/3/5(月) 15:39 -

引用なし
パスワード
   ▼Kein さん:

ありがとうございます!

完璧に思い通りの結果が得られました。

自分の作ったソースとは全然違うので参考になります。

マクロの一部に組み込みたかったので、非常に助かります。
ありがとうございましたー

6102 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free