単二電池

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

A 回答 (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
'------------------------------------------------
    • good
    • 0

行削除のイベントをVBAレベルでは捉えられないと思うので、コマンドボタンをクリックしたとき新たに上行から番号を振りなおすとかですかね。


ROW関数を使った番号なら行削除、行挿入したら自動的に変わってくれます。
上行からの連番でなければ、場合によりますがほほお手上げですね。
    • good
    • 0

こんばんは。



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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!