ここから本文です

解決済みのQ&A

エクセルVBAを勉強しているのですがなにぶん初心者で自動採番をしたいのですが行き...

nxwct392さん

エクセルVBAを勉強しているのですがなにぶん初心者で自動採番をしたいのですが行き詰っていますどなたか知恵を授けてください。

番号 機種 金額
A00001

【VBAのユーザーフォーム】

番号
──────
──────
機種
──────
──────

□新規 □登録
ユーザーフォームの新規ボタンをクリックするとエクセル表に
直接自動採番されるのではなくユーザーフォームにいったん
表示されてからそのほかの情報を入力した後にエクセル表に
保存がしたいのです。

どうかよろしくお願いいたします。

補足
question12121212さんへ

上記状態でよいです。
  • 質問日時:
    2009/8/24 21:44:24
  • 解決日時:
    2009/8/26 18:44:44
  • 閲覧数:
    2,262
    回答数:
    1
  • お礼:
    知恵コイン
    250枚

ベストアンサーに選ばれた回答

yama_ski_11さん

フォームの作成ができるものとして、コードのみ回答します。添付図のフォームにはテキストボックス1~3(上から順番に)とコマンドボタン1~2(左から)が配置されています。同様なものを作成し、下記のコードを標準モジュールとコマンドボタンクリックに貼り付けると動作します。
①Alt+F8でstartを実行します。フォームが表示されます。
②新規のボタンをクリックするとそのシートのA列にある次のコードがフォームに表示されます。
③機種の名称と金額(全角・半角どちらでも可)を入力し、登録ボタンをクリックするとシートにコピー(入力)されます。
④新規ボタンをクリックすると次の入力状態になるので、続けて繰り返し作業できます。
⑤終了はフォームの右上にある×をクリック

標準モジュール

Sub start()
UserForm1.Show
End Sub

フォーム内のコード

Private Sub CommandButton1_Click()
Range("A" & Rows.Count).End(xlUp).Select
a = ActiveCell.Value
b = Mid(a, InStr(1, a, "0"))
c = Val(b)
d = Len(b)
c = c + 1
e = Right("000000" & c, d)
f = Left(a, InStr(1, a, "0") - 1)
f = f & e
UserForm1.TextBox1 = f
UserForm1.TextBox2 = ""
UserForm1.TextBox3 = ""
End Sub

Private Sub CommandButton2_Click()
r = Range("A" & Rows.Count).End(xlUp).Row + 1
Cells(r, 1) = UserForm1.TextBox1
Cells(r, 2) = UserForm1.TextBox2
Cells(r, 3) = Val(StrConv(UserForm1.TextBox3, vbNarrow))
End Sub

投稿画像

質問した人からのお礼

  • 笑う画像までつけて下さってありがとうございました。
    おかげさまでできるようになりました。
  • コメント日時:2009/8/26 18:44:44

グレード

Q&Aをキーワードで検索:

総合Q&Aランキング

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。

知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する