• 締切済み

VBA指定セルの最大値を取得して+1の連番を振る 

はじめまして。VBAを利用し、職場で業務連絡を周知する為の業務連絡表を作成しています。 ■質問内容: 業務名別に紐付く指定の業務連絡番号を自動入力して、且つ業務連絡番号の枝番(作成される毎に1追加される連番)を自動で振りたいのですが、連番を振るコードが分かりません。 ※1件の業務連絡に対し業務連絡表を1シート作成し、以降蓄積される各業務連絡表シートを1ファイルで管理します。 概要だけを上手くご説明できませんので、作成手順をご説明させて頂きます。 下記項目、3.4.のVBAコードがどうしても分かりません。 ご存知の方がいましたらお教えいただけます様お願い致します。 ■仕様と作成手順: 0.業務連絡発生時、ファイルを起動して業務連絡を入力するユーザーフォームを開く。ユーザーフォーム内では以下6項目を順に入力する。 1.新規作成のオプションボタンを押す= 雛形の業務連絡シートをコピーする。(使用当初、ファイル内には雛形シートのみ存在)   2.業務名が登録されているコンボボックスより対象の業務名を選択= 業務名は●、▲、■の三種類を設定。尚、ここで選択した業務名はコピーシートのセルB1に入る。 3.指定された業務連絡番号をテキストボックスに自動入力する= 業務連絡番号は、業務名が●の時はA、▲の時はB、■の時はC、に設定。前項目2で業務名を選択すると自動で対象の業務連絡番号がテキストボックスに表示される。(このテキストボックスは業務連絡番号を確認する為だけの物なので直接入力は不可にする)尚、ここで選択した業務名はコピーシートのセルB2に入る。 4.3で指定された業務連絡番号に対し、枝番として作成順番を示す連番をテキストボックスに自動入力する= 例として、業務名●の業務連絡表をはじめて登録する場合は、業務名に●を選択し、業務連絡番号にAが自動で入り、枝番に1を自動で振る。また、業務名●の業務連絡表を2回目に登録する場合は、業務名に●を選択すると業務連絡番号には同じ様にAが自動で入り、枝番には2が自動で振られる。そして業務名▲を初めて登録する場合は、業務連絡番号にはBが入り、枝番は1を自動で振る。(このテキストボックスは業務連絡番号に対する枝番を確認する為だけの物なので直接入力は不可にする)尚、ここで選択した業務連絡番号はコピーシートのセルD2に入る。   5.業務連絡内容をテキストボックスに入力する= 任意の内容を入力。尚、ここで選択した業務連絡内容はコピーシートのB3に入る。 6.ユーザーフォーム上での入力した内容を登録するコマンドボタン= 上記5項目の内容を入力したコピーシートに名前を付ける。 名前は、【業務連絡番号 + 枝番(作成順番を示す連番)】+ 業務連絡表の形式で付ける。 ■補足(1): 現時点で分かる範囲のコードになります。 '起動時にユーザーフォームを起動する Private Sub Workbook_Open() ThisWorkbook.Worksheets("【雛形】業務連絡表").Select UserForm1.Show End Sub '1,新規作成用に雛形業務連絡シートをコピーする Private Sub OptionButton1_Click() Sheets("【雛形】業務連絡表").Copy After:=Sheets(Sheets.Count) End Sub '2,業務名選択 Private Sub ComboBox1_Change() Range("B1").Value = ComboBox1.Value If ComboBox1.Value = "●" Then TextBox1.Value = "A" TextBox2.Value = "1" ’作成開始時の1を設定 ElseIf ComboBox1.Value = "▲" Then TextBox1.Value = "B" TextBox2.Value = "1" ’作成開始時の1を設定 ElseIf ComboBox1.Value = "■" Then TextBox1.Value = "C" TextBox2.Value = "1" ’作成開始時の1を設定 End If End Sub '3,指定された業務連絡番号入力 Private Sub TextBox1_Change() Range("B2").Value = TextBox1.Value End Sub Private Sub TextBox2_Change() '4,業務連絡番号の枝番入力(連番式) Range("D2").Value = TextBox2.Value End Sub '5,業務連絡内容を入力 Private Sub TextBox3_Change() Range("B3").Value = TextBox3.Value End Sub '6,コピーシートに"【業務連絡番号 + 枝番(作成順番を示す連番)】+ 業務連絡表"の形式で名前を付ける。 Private Sub CommandButton1_Click() Dim ws As String ws = "【" & TextBox1.Value & Label4 & TextBox2.Value & "】" & "業務連絡表" ActiveSheet.Name = ws End Sub '業務名登録 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "●" .AddItem "▲" .AddItem "■" End With '業務連絡番号と枝番を直接入力禁止にする。 TextBox1.Enabled = False TextBox2.Enabled = False End Sub 以上。

みんなの回答

回答No.1

流し読みしかしてませんが 単純に発行された枝番を管理するシートを別に作成しておけば、 新規作成するときはそこを見れば今まで何番まで発行されたか分かるのでその値に+1をして枝番を自動採番して使用。 もちろん採番後は管理シートにも採番したことを反映させる(+1)。

pink-amigo
質問者

お礼

ご回答ありがとうございます。 業務連絡番号別に専用シートを設けそこに連番を振り、その後は連番の値を業務連絡表シートとユーザーフォームに反映させる方法で試して見ます。

関連するQ&A