やりたい事の説明
やりたい事は、テーブルのフィールドに、「date_no」というのがあり、フォームの非連結テキストボックス「date_no_input」があります。
「date_no」は、日付(例2021年9月1日)なら、210901001というように、日付+連番が入力されています。
ボタンをクリックした時に、まずは、
やりたい事ポイント
自動で「date_no_input」にテーブル登録の連番からの続きを入力したい
のです。
丸パクリできるVBAコード発見
本当に助かります!!
説明もわかりやすく、VBAコードが丸パクリできそうじゃないですか!?
下記のVBAコードは自分用に一部書き換えています。
Sub date_number() Dim MAX_NO As Variant Dim YR As Variant Dim MO1 As Variant Dim DT1 As Variant Dim ITEM1 As String Dim NO As Variant Dim R_MAX_NO As Variant Dim CNT1 As Long '今日の日付から年の下の2桁を持ってきます YR1 = Right(Year(date), 2) '今日の日付から月の2桁を持ってきます MO1 = Format(Month(date), "00") '今日の日付から日の2桁を持ってきます DT1 = Format(Day(date), "00") 'yymmddの今日の日付を作成します YMD1 = YR1 + MO1 + DT1 '日付+連番の一番大きいものを取得します MAX_NO = DMax("date_no", "orderdata") '日付+連番の一番大きいもの日付を取得します LEFT_MAX_NO = Left(MAX_NO, 6) '日付+連番の一番大きいものがNullのときは今日+001を取得します If IsNull(MAX_NO) Or MAX_NO = "" Then ITEM1 = YMD1 + "001" '日付+連番の一番大きいものがNullでないときで今日と異なっていれば今日+001を取得します ElseIf YMD1 <> LEFT_MAX_NO Then ITEM1 = YMD1 + "001" Else '日付+連番の一番大きいものの右の3カラムの番号を取得します R_MAX_NO = Mid(MAX_NO, 7, 3) '番号を数字に直して1をプラスします CNT1 = Val(R_MAX_NO) + 1 '日付+番号をテキストにします ITEM1 = YMD1 + Format(CNT1, "000") End If date_no_input = ITEM1 End Sub
サンプルのお陰で時短(感謝)
ほとんど丸パクリのVBAコードですが、自分用に修正したところは、
'日付+連番の一番大きいものを取得します
MAX_NO = DMax("date_no", "orderdata")
と、最後に値を非連結のテキストボックスに入力するコードだけです。
date_no_input = ITEM1
丸パクリできるVBAコードで本当に時短することができ感謝です。
今回のノウハウだけじゃなく他にも沢山あるようなので、勝手にリンクを貼って宣伝しておきます。
ココがおすすめ