Excel VBA質問箱 IV

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

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


3065 / 13644 ツリー ←次へ | 前へ→

【64511】自動番付の方法教えてください。 ひかる 10/2/16(火) 23:42 質問[未読]
【64512】Re:自動番付の方法教えてください。 ichinose 10/2/17(水) 6:26 発言[未読]
【64517】Re:自動番付の方法教えてください。 ひかる 10/2/18(木) 0:19 お礼[未読]
【64513】Re:自動番付の方法教えてください。 Mariko 10/2/17(水) 7:33 回答[未読]

【64511】自動番付の方法教えてください。
質問  ひかる  - 10/2/16(火) 23:42 -

引用なし
パスワード
   またお世話になります。
自動番付の方法が分かりません。教えてください。

   A    B
1  No  氏名
2  1   A
3  2   B
4  3   C
5  4   D
このようにA列に自動番号を付けるため、
Dim NewData As Long
New Data = Range("A65536".end(xlUp).Row + 1
Cells(NewData, 1) = NewData - 1 と
データ(氏名)を登録するたびに自動番付をつけていたのですが、氏名Cの行を削除(データの削除)してから再度データを登録するとNoが1,2,4,4と同番ができてしまいます。
行を削除しても同番ができないような方法がありましたらお教えください。
よろしくお願いします。

【64512】Re:自動番付の方法教えてください。
発言  ichinose  - 10/2/17(水) 6:26 -

引用なし
パスワード
   おはようございます。

>自動番付の方法が分かりません。教えてください。
>
>   A    B
>1  No  氏名
>2  1   A
>3  2   B
>4  3   C
>5  4   D
>このようにA列に自動番号を付けるため、
>Dim NewData As Long
>New Data = Range("A65536".end(xlUp).Row + 1
>Cells(NewData, 1) = NewData - 1 と
>データ(氏名)を登録するたびに自動番付をつけていたのですが、氏名Cの行を削除(データの削除)してから再度データを登録するとNoが1,2,4,4と同番ができてしまいます。
>行を削除しても同番ができないような方法がありましたらお教えください。
>よろしくお願いします。

最大値+1という値を登録してみては?

Sub test()
  Dim rng As Range
  Set rng = Range("a1", Cells(Rows.Count, "a").End(xlUp))
  With rng
    .Cells(.Rows.Count + 1).Value = Application.Max(.Cells) + 1
  End With
End Sub


番号の振り直しという機能も必要かもしれませんが・・・。

【64513】Re:自動番付の方法教えてください。
回答  Mariko  - 10/2/17(水) 7:33 -

引用なし
パスワード
   ▼ひかる さん:
こんなことでしょうか?

Dim i As Long
i = Range("B" & Rows.Count).End(xlUp).Row
Range("B2:B" & i + 1).Offset(, -1).ClearContents
With Range("A2:A" & i)
  .FormulaR1C1 = "=ROW()-1"
End With

【64517】Re:自動番付の方法教えてください。
お礼  ひかる  - 10/2/18(木) 0:19 -

引用なし
パスワード
   ichinoseさん、Marikoさんご返答ありがとうございます。
最大値+1という発想の転換に感銘いたします。
お二人の意見をご参考にさせていただきながらやってみたいと思います。
また、よろしくお願いします。
ありがとうございました。

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