「教えて!ピックアップ」リリース!

下記の表があり、InputBoxで入力するように作成しています。その際に、データを入力がされたら自動でナンバーを振るようにしたいのですが、どのように記述していいのかわからなく・・・
どなたか教えていただければと思います。

下記のコードはNo.が入っている前提のコードです。
Do While ActiveCell.Offset(0, -1).Value <> "" の個所をどのように記述したらいいのでしょうか?
初心者で申し訳ございませんがよろしくお願いいたします。

Sub 自動でナンバー振りたい()
Dim nyuryoku As String
If Range("C5").Value = "" Then
Range("C5").Select
Else
Range("C4").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
End If
Do While ActiveCell.Offset(0, -1).Value <> ""
nyuryoku = InputBox("日付を入力してください" & Chr(10) & _
"入力を終了する場合にはabcと入力します", , , 200, 200)
If nyuryoku = "abc" Or nyuryoku = "" Then
Exit Do
Else
ActiveCell.Value = nyuryoku
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = InputBox("得意先名を入力してください", , , 200, 200)
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = InputBox("商品名を入力してください", , , 200, 200)
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = InputBox("数量を入力してください", , , 200, 200)
ActiveCell.Offset(1, -3).Select
End If
Loop
Windows("第5章.xlsm:1").Activate
ActiveWindow.Close
ActiveWindow.WindowState = xlMaximized
Range("A1").Select
End Sub

「ExcelVBA No.を自動連番で設定」の質問画像

A 回答 (2件)

こんにちは


表題への直接の回答ではありませんが、
処理についてVBAで行う合理性が無いように思います
VBA処理中に挟み込むにしても・・どうでしょう?
InputBoxの使い方としても入力値を直接セルに書き込むような場合、
手数がかかるだけのような気がしますね

使い方として(一例)InputBoxの入力値をチェックして変数に代入して値を処理、結果をセルに書き出す・・・ような使い方なら

今回は、関数や入力規則、どうしてもVBAでならシートイベントなどを使うのが良いと思います

表もテーブルで作成した方が何かと便利な気がします
ちなみに
>入力がされたら自動でナンバーを振る・・・のであれば
例の表組の場合
A5セルに(1例) =IF(B5<>"",ROW()-4,"") と入れて下にフィルで良いと思います

事情が御有りなのかもしれませんが、
Excelの機能、関数、VBAを上手く組み合わせて作るのが好ましいと思います
    • good
    • 0
この回答へのお礼

ありがとございます。
参考になりました。

お礼日時:2022/08/08 18:35

こんばんは



>Do While ActiveCell.Offset(0, -1).Value <> "" の個所を
>どのように記述したらいいのでしょうか?
ループを抜けるのが、ダイアログのキャンセルかabc入力のみとしてよいのなら、無限ループにしてしまえばよいので、
 Do While True
としておけば良いでしょう。

>自動でナンバーを振るようにしたいのですが、
処理のどこかで、行番号 - 4( ActiveCell.Row - 4 )をB列に記入すれば良いです。
    • good
    • 0
この回答へのお礼

ありがとございます。
No.降るの事ができませんでしたが、参考になりました。

お礼日時:2022/08/08 18:37

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング