
Excelで、データ入力用のシートを作成しています。
ボタンをクリックすると、一番上に行が追加され、そこに入力していくようにするのですが
行を追加したと同時に番号が割り当てられるようにしたいです。
A B C
番号 日付 名前
1 003 9/2 ●●
2 002 9/1 ○○
3 001 9/1 ●●
例えば、上の状態で、追加ボタンをクリックすると
一番上に、行が新たに追加され自動的にA1に004が入力されるイメージです。
行追加をし、指定のセルに文字を入力することはいろいろ調べてわかったのですが、
連番という形で、一つ下のセルに1を追加した番号を・・・というのがわからず質問をさせていただきました。
どなたか教えていただけませんでしょうか。よろしくい願いいたします。
No.3ベストアンサー
- 回答日時:
No.1です。
数値の前が「A」だとして・・・
A列は数値だけの処理を行い、表示形式で操作してみてはどうでしょうか?
Sub Sample2()
Dim myMax
myMax = WorksheetFunction.Max(Range("A:A"))
Rows(2).Insert
With Range("A2")
.NumberFormatLocal = "A000" '//←ココで表示形式を操作しておく//
.Value = myMax + 1
End With
End Sub
※ あくまで数値の前は決まった記号?であるコトが前提です。
そして、すでに存在するデータ(A005)などは単に「5」という数値である!とします。m(_ _)m
No.5
- 回答日時:
こんにちは
横からですみませんが…
内容がよく把握できないけれど、なんとなくの雰囲気でこんなのでも足りるような気がしますが・・・
Sub Sample()
Rows(2).Insert CopyOrigin:=xlFormatFromRightOrBelow
Range("A2").FormulaLocal = "=A3+1"
End Sub
※ A列の値が数値ではない場合は、セル表示はエラー表示(#VALUE!)になります。
(補足を読む限りでは、数値と推測されますので…)

No.4
- 回答日時:
>例えば番号をA000、A001、A002…となるようにした場合
>見た目はA001 …と表示されていても実際にセルを選択すると
>A001ではなく 1 になるので 見たままのものをコピー、貼り付けしたいです。
こういうことですか?
----------------------------------------------------
Public Sub 行追加()
Dim str As String
Dim num As Long
If Range("A2").Value = "" Then
str = "A000"
Else
str = Range("A2").Value
End If
num = CLng(Right(str, 3)) + 1
str = Left(str, 1) & Format(num, "000")
Rows(2).Insert
Range("A2").Value = str
Range("B2").Select
End Sub

No.2
- 回答日時:
セルのレイアウトは添付図の左側(赤線で囲んだ方)のレイアウトであってますか。
(1行目は見出し行です)番号の並びですが、必ず左側のように下から上に並んでますか。(添付図の赤線で囲んだ方)
それとも、右側の様なケースもあるのですか。(添付図の青線で囲んだ方)

No.1
- 回答日時:
こんばんは!
質問通りだと
Sub Sample1()
Dim myMax
myMax = WorksheetFunction.Max(Range("A:A"))
Rows(2).Insert
With Range("A2")
.NumberFormatLocal = "000"
.Value = myMax + 1
End With
End Sub
こんな感じではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ExcelのVBAで連番を振る。
Excel(エクセル)
-
Excel VBAで条件ごとの自動採番について
Excel(エクセル)
-
excelVBA 項目ごとに連番をふりたい
Excel(エクセル)
-
-
4
ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい
Visual Basic(VBA)
-
5
エクセルVBAを使ってセルに日付+通し番号を入力したい
Excel(エクセル)
-
6
ExcelのVBAで自動採番したいのですが
その他(Microsoft Office)
-
7
[Excel VBA]空白セル以外に連番をつけるマクロを教えてください
Excel(エクセル)
-
8
エクセル グループ毎に番号(連番)を振りたいです。但し、同じデータには同じ番号を振りたいのです。
Excel(エクセル)
-
9
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
10
条件を指定して連番を振る方法(エクセル)
Excel(エクセル)
-
11
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
12
【VBA】 通し番号の入力について
その他(Microsoft Office)
-
13
入力済み、選択したセルに連動した行のデータをユーザーフォームで呼び出すには
Excel(エクセル)
-
14
グループごとに連番をふる
Visual Basic(VBA)
-
15
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
16
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
17
VBAで色の付いているセルの行削除
Excel(エクセル)
-
18
Excel VBA あるセルでENTERを押すと特定のセルへ移動したい
Excel(エクセル)
-
19
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
20
別のシートから値を取得するとき
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのチェックボックスを...
-
エクセルで数字から名前に変...
-
Excel:セルに入力されている日...
-
エクセル 条件が成立した場合...
-
折り返して表示、縮小して表示...
-
エクセルにて結合サイズが異な...
-
エクセル関数で…
-
エクセルでのセルをまたぐ文字...
-
エクセルファイルを開くとメッ...
-
エクセル 親番号、子番号の書き...
-
エクセルの文字入力
-
エクセルVBAで、C言語のscanf("...
-
関数 IFとISBLANKのネストにつ...
-
Excel関数 「日付を入力...
-
【Excel】セルをクリック...
-
Excelのセル上の日付の不具合
-
Excel VBAでオートフィルタ後...
-
エクセルで漢字を数字に変換す...
-
エクセルで縦書きルビの付け方
-
エクセルのVBAでのプログラミン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのチェックボックスを...
-
Excel関数 「日付を入力...
-
エクセルで数字から名前に変...
-
エクセル 条件が成立した場合...
-
エクセルにて結合サイズが異な...
-
Excel:セルに入力されている日...
-
エクセル関数で…
-
エクセルでのセルをまたぐ文字...
-
pages で「テキストを左右両端...
-
ワードで文字がセルの下にもぐ...
-
エクセルで縦書きルビの付け方
-
エクセルについて、A1が1ならば...
-
EXCELで連続していない数値を30...
-
excel どのくらい増減したか一...
-
折り返して表示、縮小して表示...
-
エクセルで漢字を数字に変換す...
-
エクセルで在庫表を作りたい
-
関数 IFとISBLANKのネストにつ...
-
エクセルで入力すると日付など...
-
関数名は合っているのに#NAME?...
おすすめ情報
ご回答ありがとうございます。
イメージ通りのことができました。
ここでまたひとつ質問なのですが、番号を、セルに表示されている通りにコピー貼り付けしたい場合どのようにすればよいのでしょうか。
(現在、番号列は000スタートになっていますが)
例えば番号をA000、A001、A002…となるようにした場合
見た目はA001 …と表示されていても実際にセルを選択すると
A001ではなく 1 になるので 見たままのものをコピー、貼り付けしたいです。
すみませんが、アドバイスよろしくお願いいたします。
新しいものが随時足されるようにするので、番号の並びは赤線側のように下から上に増えていきます。