- ベストアンサー
excelのオートNo作成
エクセルの オートNo 作成を教えてください。 A2~A10000セルのセルで、常に 「=ROW()-2」 を入力させておきたい。 例えば途中で行を挿入した場合や、セルの値を書き換えたりしても、すぐに自動で「=ROW()-2」 と修正させるようにしたいです。 どういった、ことをすればいいでしょうか? エクセルは2000です。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No.3です! たびたびごめんなさい。 前回のコードではB列以降を操作してもマクロが走ってしまい、目障りだと思いますので、 ↓のコードに訂正してください。 (A列に変更があった場合にマクロが走るようにしてみました。) Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim i, j As Long j = Cells(Rows.Count, 1).End(xlUp).Row If Target.Column = 1 Then If j > 10000 Then Application.ScreenUpdating = False For i = 2 To j If Cells(i, 1) = "" Then Cells(i, 1).Formula = "=row()-2" End If Next i Else For i = Cells(Rows.Count, 1).End(xlUp).Row + 1 To 10000 Cells(i, 1).Formula = "=row()-2" Next i End If End If Application.ScreenUpdating = True End Sub 'この行まで 何度も失礼しました。m(_ _)m
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17070)
エクセルには 行挿入・セル挿入したとき、上行と同じ式を複写するという機能は無い。 ちなみに、本件削除のときはうまく行く。 ーー また挿入操作をしたとき、VBAで知らせてくれる、イベントというものが無い。従って挿入されたタイミングがわからないし、どのセル・行で挿入されたか、わからない。 以前から、たまにこの質問があるが Googleででも「excel vba 行挿入 イベント」ででも照会すると、回答の情況が判る。 (1)Wendy02さんの回答 http://questionbox.jp.msn.com/qa2402901.html 普通の人には難しすぎて理解が出来ないでしょう。 (2)ブックを閉じるときに(これもイベントだが)に全セルに番号を上行から振りなおして保存。 (3)ボタンクリックで行挿入をやらせる (4)その他 http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200903/09030146.txt など見つかりますが、普通のVBAが出来る程度の範囲内では、良いものが無いように思います。
お礼
回答ありがとうございました。 こんなに大変なことだとは思っていませんでした。 勉強になりました。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! (1)行削除の場合 → 常にA10000セル(9998)までは連番を表示させる。 (2)行挿入の場合 → 最終行は増えるが挿入行のA列(空白セル)に連番を表示する。 という考え方でのVBAの一例です。 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストして、行挿入・行削除を行ってみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim i, j As Long j = Cells(Rows.Count, 1).End(xlUp).Row If j > 10000 Then Application.ScreenUpdating = False For i = 2 To j If Cells(i, 1) = "" Then Cells(i, 1).Formula = "=row()-2" End If Next i Else For i = Cells(Rows.Count, 1).End(xlUp).Row + 1 To 10000 Cells(i, 1).Formula = "=row()-2" Next i End If Application.ScreenUpdating = True End Sub 'この行まで ※ For~Next を使っていますので、若干時間がかかるかもしれません。 参考にならなかったらごめんなさいね。m(_ _)m
変な質問ですね。 セル A2 に式 =ROW()-2 を入力して、此れを下方にズズーッとドラッグ&ペースト しておけばOKでは? 修正も何もないけど、何か問題があるのですか?
補足
回答ありがとうございます。 途中でいろんな人が編集しても、常にNOを表示させておきたいのが理由です。
●エクセルで行挿入した際、自動的に計算式も入力される方法を教えて下さい。 - 質問・相談ならMSN相談箱 http://questionbox.jp.msn.com/qa2402901.html
お礼
回答ありがとうございました。 すごく複雑ですけど、なんとかやりたいことが出来そうです。
お礼
なんどもご親切に、ありがとうございました。 一番現実的な、対策案でしたので、選ばせていただきました。 ありがとうございました。