●質問の主旨
データベースにデータを入力していくたびに
そのデータに「入力No.」1を振り、以後データが増えるたびに
番号を1つずつ増やしていきたいと考えています。
A2→1
A3→2
A4→3
A5→4
という具合に、途中でブックを保存して再度立ち上げても
常に連続した数字を入力したいと思っています。
以下のコードをどのように書き改めばよいでしょうか?
ご教示願います。
●現在の問題点
1.「データベース入力」のボタンを押すと
A2セルに「入力No.」2が入力されてしまう
2.ブックを閉じない限り、入力した番号は
2のままで転記されてしまう。
3.ブックを保存して閉じた後、再度立ち上げ「入力No.」を
入力しようとすると今度は4が入力される。
4.その後はブックを保存して閉じた後、再度立ち上げても
4が入力され続ける。
●コード
Option Explicit
'ユーザーフォームの初期化
Private Sub UserForm_Initialize()
TextBox3.Value = Worksheets(1).Range("A2").Value + 1
txtdate = Date
Call No
End Sub
'フォームからデータベースへの転記
Private Sub CommandButton3_Click()
Dim Rowpos As Long
Dim ColPos As Long
Rowpos = Worksheets(1).Range("a10000").End(xlUp).Row
ColPos = 1
Rowpos = Rowpos + 1
With Worksheets(1)
.Cells(Rowpos, ColPos) = TextBox3.Value
.Cells(Rowpos, ColPos + 1) = txtdate.Value
End With
End Sub
'Noの加算
Private Sub No()
Dim i As Long
For i = 1 To 1 Step 1
TextBox3.Value = TextBox3.Value + 1
Next
End Sub
'ユーザーフォームの終了
Private Sub CommandButton5_Click()
Unload UserForm1
End
End Sub
以上よろしくお願い申し上げます。使用機種はWindowsVistaで、
Excel2007です。私はVBA初心者です。
No.1ベストアンサー
- 回答日時:
>Private Sub CommandButton3_Click()
>:
>With Worksheets(1)
> .Cells(Rowpos, ColPos) = TextBox3.Value
> .Cells(Rowpos, ColPos + 1) = txtdate.Value
>End With
.Cells(Rowpos, ColPos) = TextBox3.Value
ここが「入力No.」をセルにセットする箇所。
TextBox3.Valueの値はというと、
>Private Sub UserForm_Initialize()
> TextBox3.Value = Worksheets(1).Range("A2").Value + 1
> txtdate = Date
> Call No
>End Sub
ここでA2セル+1をセットして、Call No でさらに+1。
A2セルが 2 だったら 2+1+1 で 4。
UserForm_Initializeイベントで一定のセル値(A2)しか見に行ってないから
そりゃ、固定になりますよね。
UserForm_Initializeイベントで一定のセル値(A2)ではなく
最終行の値を見に行くようにすれば良いですよね。
あと、Private Sub No()の中身も見直して下さい。
何か意図があってそういう書き方してますか?
「入力No.」を増分させるには何処かのタイミングで
TextBox3.Value = TextBox3.Value + 1
すれば良いです。
またはTextBox3に表示させる必要がなければ
新規データをセルにセットするタイミングで直上行+1でもいいわけです。
それとか .Row-1とか。
end-u様
先ほどに引き続き連続でアドバイスをしていただき、
ありがとうございます。
end-u様のアドバイスにもとづき
下記のようにコードを書き改めたところ、データベースに
連続した番号を振ることができるようになりました。
'ユーザーフォームの初期化
(3行目)
TextBox3.Value = Worksheets(1).Range("a10000").End(xlUp).Row
'Noの加算
(DimやForステートメントは削除。下記のコードのみ)
TextBox3.Value = TextBox3.Value + 1
>あと、Private Sub No()の中身も見直して下さい。
>何か意図があってそういう書き方してますか?
特に意図はありません。
手持ちの初級者用のテキストを読んでたら、頻出していたので
何となく自分の判断で使ってみました。
2つ続けてのご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) Excel VBA ユーザーフォーム1のコンボボックスに別ブックの値を反映させたいです。 6 2023/03/21 16:12
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックスの番号を使っ...
-
Windowsのアプリ開発ってなんの...
-
数字以外の入力をエラーにする...
-
エクセルVBA テキストボックス...
-
初歩的な事だと思います。 Sub...
-
エディットボックスの入力制限...
-
EXCEL VBA で指定した範囲に入...
-
Excel-VBAでInputBox+Pulldown...
-
VBAの質問になります メッセー...
-
入力フォームの値をQRコードで...
-
DataGridView 列ごとの入力制限
-
DataGridViewの桁数制限に関して
-
vbaで同じテキストボックスを繰...
-
教えて!全角文字「μ」の半角
-
excel vba でユーザーフォーム...
-
テキストボックスの入力チェック。
-
SQL で数値フィールドにDBNULL...
-
VBAでInputBoxの再入力をさせる...
-
入力フォームで入力出来る文字...
-
TEXTAREA に入力時の位置
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
テキストボックスの番号を使っ...
-
初歩的な事だと思います。 Sub...
-
数字以外の入力をエラーにする...
-
EXCEL VBA で指定した範囲に入...
-
Excel-VBAでInputBox+Pulldown...
-
入力フォームの値をQRコードで...
-
VBAの質問になります メッセー...
-
c#でTextBoxの入力制限
-
VBAで質問があります
-
教えて!全角文字「μ」の半角
-
VBAでInputBoxの再入力をさせる...
-
excel vba でユーザーフォーム...
-
TextBoxから数字が文字...
-
エディットボックスの入力制限...
-
accessで該当するレコードがな...
-
DataGridViewの桁数制限に関して
-
VBA R1C1形式で変数の入力について
-
「イ分」・・・フンという文字...
-
Windowsのアプリ開発ってなんの...
おすすめ情報