' [426.xls] ' [Module1] のコード '★★☆ マルチページを使ってデータの入出力・閲覧を簡単にする ☆★★ Option Explicit Sub start() UserForm1.Show End Sub Sub start_A() Sheets("作業シート").Visible = -1 Sheets("Title").Visible = 2 End Sub Sub start_B() Sheets("Title").Visible = -1 Sheets("作業シート").Visible = 2 End Sub ' [UserForm1] のコード Option Explicit Dim max_d As Integer Dim i As Integer Dim no As Integer Private Sub CommandButton1_Click() '全ての TextBox を書込可能にする For i = 1 To 9 Me("TextBox" & i).Enabled = True Next i '書込ボタンを有効にする CommandButton2.Enabled = True End Sub Private Sub CommandButton2_Click() '書込を開始する前に必修項目をチェックする '(ここでは社名を必修項目としています) If TextBox2.Text = "" Then MsgBox "社名がありません" Exit Sub End If 'データ範囲の新規書込行の値を変数にセット no = SpinButton1.Value + 5 'データ範囲の項目数だけ繰り返す For i = 1 To 9 'データ範囲の1の項目と3の項目の場合 If i = 1 Or i = 3 Then '"株式会社"があればデータ項目に1をセット If Me("TextBox" & i).Text = "株式会社" Then Cells(no, i) = 1 Else 'なければ空白にする Cells(no, i) = "" End If Else 'TextBoxの項目番号の内容を対応するデータ項目に書き込む Cells(no, i) = Me("TextBox" & i).Text End If Next i 'データ範囲の最大件数を格納する変数を再定義 max_d = [B5].End(xlDown).Row 'スピンボタンの許容範囲を再設定 SpinButton1.Max = max_d - 4 '書込ボタンを無効にする CommandButton2.Enabled = False End Sub Private Sub SpinButton1_Change() 'スピンボタンの現在の数値を表示する L件数.Caption = Format(SpinButton1.Value) 'スピンボタンの値をデータ範囲に合わせてその値を変数にセット no = SpinButton1.Value + 5 'データ範囲の項目数だけ繰り返す For i = 1 To 9 'データ範囲の1の項目と3の項目の場合 If i = 1 Or i = 3 Then If Cells(no, i) = 1 Then '1があれば TextBox に"株式会社"の文字をセット Me("TextBox" & i).Text = "株式会社" Else 'なければ空白にする Me("TextBox" & i).Text = "" End If Else 'データ範囲の1の項目と3の項目以外の場合 'データ範囲の項目番号の内容を対応する TextBoxにセット Me("TextBox" & i).Text = Cells(no, i) End If 'スピンボタンの値が最大データ件数より少ない場合 If SpinButton1.Value < max_d - 4 Then '対応する TextBox を書込禁止にする Me("TextBox" & i).Enabled = False '変更ボタンを有効にする CommandButton1.Enabled = True '書込ボタンを無効にする CommandButton2.Enabled = False Lメッセージ.Caption = "" Else 'スピンボタンの値が最大データ件数より多い場合 Me("TextBox" & i).Enabled = True '変更ボタンを無効にする CommandButton1.Enabled = False '書込ボタンを有効にする CommandButton2.Enabled = True Lメッセージ.Caption = "新 規" End If Next i End Sub Private Sub UserForm_Initialize() 'ワークシートのデータ範囲から社名を元に登録件数を取得 max_d = [B5].End(xlDown).Row 'スピンボタンの許容範囲を設定 '最大値に関しては先に取得した登録件数に新規行を1足して 'データの開始行を引いた数値を設定 '登録件数に対応できるように柔軟な設計をするのがポイントです With SpinButton1 .Min = 1 .Max = max_d - 4 .Value = 1 End With '前(株)から営業までの TextBox のIMEモードをひらがなに設定 For i = 1 To 7 Me("TextBox" & i).IMEMode = 4 Next '電話、FAXの TextBox をIMEを起動しないに設定 TextBox8.IMEMode = 2 TextBox9.IMEMode = 2 End Sub