• ベストアンサー

エクセルVBAで自動付番をしたい

表題のとおりです。VBAで自動付番したいです。例えば、既に連番で番号を振ってあるのですが、行の削除をすることによって、もう一度番号を連番でふり直したいのです。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

行削除のイベントを取り付けるためには、ボタンにクラス・インスタンスを設けるのですが、そのような方式は大げさすぎて一般的ではありません。今回は、数式を置くことによって、Calculate イベントが働きますので、1個でも、式が残っていれば、マクロで、数式を振りなおしてくれます。その仕組みは、行を削除すると、数式が、再度計算しなおしますので、その時にイベントが働きます。 シートの下のタブを右クリック-コードの表示で、 'シートモジュールに貼り付けてください。 '------------------------------------------------ Private Sub Worksheet_Calculate()  Application.EnableEvents = False  '数式が40個より少なくなったら、  If Range("A2", Range("A65536").End(xlUp)).Count < 40 Then   'A2~A40まで、番号を振りなおし   Range("A2", "A40").FormulaLocal = "=ROW()-1"  End If  Application.EnableEvents = True End Sub '------------------------------------------------

すると、全ての回答が全文表示されます。

その他の回答 (2)

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

行削除のイベントをVBAレベルでは捉えられないと思うので、コマンドボタンをクリックしたとき新たに上行から番号を振りなおすとかですかね。 ROW関数を使った番号なら行削除、行挿入したら自動的に変わってくれます。 上行からの連番でなければ、場合によりますがほほお手上げですね。

すると、全ての回答が全文表示されます。
回答No.1

こんばんは。 VBAを使用しなくても、行番号のセルに  =ROW()-3 のように指定すれば簡単ですが・・・

すると、全ての回答が全文表示されます。

関連するQ&A