次の方法で共有

Excel のマクロを使って自動採番にしたい

Anonymous
2014-09-19T05:39:08+00:00

Excelで受発注管理をしたいと思い作成中です。

ユーザーフォームから入力できるようにしたいと思いネットを活用しながら

作成してるのですが・・・・・

↓↓現在の状態

Private Sub CommandButton1_Click()

    '入力必須の項目が未入力なら終了しない

    If TextBox3 = "" Then

    MsgBox "住所を入力してください", vbInformation, "確認"

    End If

'各テキストボックスの値をシートに転記

With Worksheets("得意先マスタ")

 Dim lastrow As Single  '最終行の次の行番号を取得する

 lastrow = 1

 Do

     lastrow = lastrow + 1

 Loop While Cells(lastrow, 5) <> ""

' LastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1    'データ設定

    .Cells(lastrow, 2).Value = TextBox1 '得意先コード

    .Cells(lastrow, 3).Value = TextBox2 '〒

    .Cells(lastrow, 4).Value = TextBox3 '住所

    .Cells(lastrow, 5).Value = TextBox4 '得意先名

    .Cells(lastrow, 6).Value = TextBox5 '電話

    .Cells(lastrow, 7).Value = TextBox6 'FAX

    .Cells(lastrow, 8).Value = TextBox7 '備考

End With

   TextBox1 = ""             '入力場所クリア

   TextBox2 = ""

   TextBox3 = ""

   TextBox4 = ""

   TextBox5 = ""

   TextBox6 = ""

   TextBox7 = ""

End Sub

Private Sub CommandButton2_Click()

 Unload Me

End Sub

Private Sub UserForm_Initialize()

    '得意先コード欄に自動連番を入力

    Range("B2").Select

    番号 = ActiveCell

    TextBox1.Value = "T" & Application.WorksheetFunction.Rept("0", 6 - Len(番号)) & 番号

    番号 = 番号 + 1

End Sub

ユーザーフォームで入力し登録ボタンをクリックするとワークシートに転記できるようにしました。

その後からやはり得意先コードだけは自動採番にしたいと思って追加をしてる所です。

現状ですとT000000となってしまって+1になりません。

1行登録して2行目からはコード欄が空白になって登録されるような状態です。

どのように変更したらT000001、T000002・・・のように自動採番になりますでしょうか。

よろしくお願いします。

"※ モデレーター注 : 質問の内容からタイトルを一部変更させていただきました。

変更前スレッドタイトル : Excel マクロ 自動採番"

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

3 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2014-09-24T03:50:35+00:00

    いつもお答えいただき、有難うございます。

    まだどこを直してプラスしたらよいのかわかりませんが、とりあえずもう少し

    ネットから使えそうなコードを引っ張ってきてやってみようと思います。

    有難うございました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2014-09-19T13:43:24+00:00

    パッと見でコードを熟読してませんが。

    UserForm Initializeで番号をセットしておられるわけですが、これはユーザーフォームがUnloadされない内は最初の一回だけよばれている訳です。

    ですから初期状態から変わらずに同じ番号がでてくることになります。

     TextBox1.Value = "T" & Application.WorksheetFunction.Rept("0", 6 - Len(番号)) & 番号

    また、かならず、CommandButton2でアンロードして、Initializeに行くことになっていても、

    > Range("B2").Select

    > 番号 = ActiveCell

    では常にB2の番号がセットされるだけです。

    ここで、LastRowの存在する行のB列をセットするとかなんとかする必要がありそうです。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2014-09-19T08:23:39+00:00

    NTHARU さん、こんにちは。

    マイクロソフト コミュニティをご利用いただき、ありがとうございます。

    Excel のマクロを使用して自動採番にしたいということなのですね。

    マクロのコードの質問については専門の VBA フォーラムがあるので、こちらのフォーラムにも投稿をして情報を集めてみてはいかがでしょうか。

    経験豊富な方から、有益な情報やアドバイスが集まりやすくなるかもしれません。

    Visual Basic for Application (VBA)

    投稿される場合は同じく、作成されたコード全文を書いて投稿されると回答が得られやすくなると思います。

    せっかく質問していただいたのにお手数なのですが、上記のフォーラムもご利用になってみてくださいね。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません