入力ウインドウ
- 2008/08/16 22:28
- カテゴリー:大会支援(ドッチボール)
ラベルで表示項目を設定します。
そして、左上にTextBox と CommandButtonを配置し、CommandButtonに以下のVBAを設定します。
Private Sub CommandButton1_Enter()
msg = TextBox1.Text
command_data = Mid(msg, 1, 1)
data = Mid(msg, 2, 2)
If "." = Right(data, 1) Then
data = Mid(msg, 2, 1)
End If
If command_data = "@" Then
command_data = Mid(msg, 2, 1)
data = Mid(msg, 3, 2)
If "." = Right(data, 1) Then
data = Mid(msg, 3, 1)
End If
End If
If command_data = "?" Then
data_no = Val(data)
Label9 = data_no
Label6 = Worksheets("得点記入用紙").Range("K" & data_no)
Label7 = Worksheets("得点記入用紙").Range("L" & data_no)
Label8 = Worksheets("得点記入用紙").Range("M" & data_no)
Label1 = Worksheets("得点記入用紙").Range("N" & data_no)
Label2 = Worksheets("得点記入用紙").Range("O" & data_no)
If Worksheets("対戦表").Cells(Worksheets("得点記入用紙").Range("P" & data_no).Value, Worksheets("得点記入用紙").Range("Q" & data_no).Value) = "" Then
Label4.BackColor = &HE0E0E0
Label5.BackColor = &HE0E0E0
Label4 = "入力待ち(左側)"
Label5 = "入力待ち(右側)"
Else
Label4.BackColor = &H80FFFF
Label5.BackColor = &H80FFFF
Label5 = Worksheets("対戦表").Cells(Worksheets("得点記入用紙").Range("P" & data_no), Worksheets("得点記入用紙").Range("Q" & data_no))
Label4 = Worksheets("対戦表").Cells(Worksheets("得点記入用紙").Range("R" & data_no), Worksheets("得点記入用紙").Range("S" & data_no))
End If
TextBox1.Text = ""
TextBox1.SetFocus
ElseIf command_data = ";" Then
If Label9 <> "" Then
data_no = Val(Label9)
If data = "M1" Then
Label4.BackColor = &H80FFFF
Label5.BackColor = &H80FFFF
Label4 = "△"
Label5 = "△"
Worksheets("対戦表").Cells(Worksheets("得点記入用紙").Range("P" & data_no), Worksheets("得点記入用紙").Range("Q" & data_no)).Value = Label4
Worksheets("対戦表").Cells(Worksheets("得点記入用紙").Range("R" & data_no), Worksheets("得点記入用紙").Range("S" & data_no)).Value = Label5
TextBox1.Text = ""
TextBox1.SetFocus
Unload UserForm1
Worksheets("進行状況").PrintOut ActivePrinter:=Worksheets("Option").Range("B10").Value
Worksheets("対戦表").PrintOut ActivePrinter:=Worksheets("Option").Range("B9").Value
ElseIf data = "L3" Then
Label4.BackColor = &H80FFFF
Label5.BackColor = &H80FFFF
Label4 = "○"
Label5 = "×"
Worksheets("対戦表").Cells(Worksheets("得点記入用紙").Range("P" & data_no), Worksheets("得点記入用紙").Range("Q" & data_no)).Value = Label4
Worksheets("対戦表").Cells(Worksheets("得点記入用紙").Range("R" & data_no), Worksheets("得点記入用紙").Range("S" & data_no)).Value = Label5
TextBox1.Text = ""
TextBox1.SetFocus
Unload UserForm1
Worksheets("進行状況").PrintOut ActivePrinter:=Worksheets("Option").Range("B10").Value
Worksheets("対戦表").PrintOut ActivePrinter:=Worksheets("Option").Range("B9").Value
ElseIf data = "L0" Then
Label4.BackColor = &H80FFFF
Label5.BackColor = &H80FFFF
Label4 = "×"
Label5 = "○"
Worksheets("対戦表").Cells(Worksheets("得点記入用紙").Range("P" & data_no), Worksheets("得点記入用紙").Range("Q" & data_no)).Value = Label4
Worksheets("対戦表").Cells(Worksheets("得点記入用紙").Range("R" & data_no), Worksheets("得点記入用紙").Range("S" & data_no)).Value = Label5
TextBox1.Text = ""
TextBox1.SetFocus
Unload UserForm1
Worksheets("進行状況").PrintOut ActivePrinter:=Worksheets("Option").Range("B10").Value
Worksheets("対戦表").PrintOut ActivePrinter:=Worksheets("Option").Range("B9").Value
ElseIf data = "R0" Then
Label4.BackColor = &H80FFFF
Label5.BackColor = &H80FFFF
Label4 = "○"
Label5 = "×"
Worksheets("対戦表").Cells(Worksheets("得点記入用紙").Range("P" & data_no), Worksheets("得点記入用紙").Range("Q" & data_no)).Value = Label4
Worksheets("対戦表").Cells(Worksheets("得点記入用紙").Range("R" & data_no), Worksheets("得点記入用紙").Range("S" & data_no)).Value = Label5
TextBox1.Text = ""
TextBox1.SetFocus
Unload UserForm1
Worksheets("進行状況").PrintOut ActivePrinter:=Worksheets("Option").Range("B10").Value
Worksheets("対戦表").PrintOut ActivePrinter:=Worksheets("Option").Range("B9").Value
ElseIf data = "R3" Then
Label4.BackColor = &H80FFFF
Label5.BackColor = &H80FFFF
Label4 = "×"
Label5 = "○"
Worksheets("対戦表").Cells(Worksheets("得点記入用紙").Range("P" & data_no), Worksheets("得点記入用紙").Range("Q" & data_no)).Value = Label4
Worksheets("対戦表").Cells(Worksheets("得点記入用紙").Range("R" & data_no), Worksheets("得点記入用紙").Range("S" & data_no)).Value = Label5
TextBox1.Text = ""
TextBox1.SetFocus
Unload UserForm1
Worksheets("進行状況").PrintOut ActivePrinter:=Worksheets("Option").Range("B10").Value
Worksheets("対戦表").PrintOut ActivePrinter:=Worksheets("Option").Range("B9").Value
ElseIf data = "CA" Then
TextBox1.Text = ""
TextBox1.SetFocus
Unload UserForm1
End If
End If
Else
TextBox1.Text = ""
TextBox1.SetFocus
End If
End Sub
Private Sub UserForm_Activate()
TextBox1.SetFocus
End Sub
まず、このフォームを表示する時に、必ずTextBoxにフォーカスが来るようにします。
その後、TabIndexを、TextBox CommandButtonの順に設定しておきます。
バーコードの入力は、必ずCRを最後に付けるようにしていますので、TextBoxに読み込んだデータを入れて、フォーカスはTextBoxからCommandButtonに移動します。
CommandButtonにフォーカスが移動すると、VBAが走り入力処理を行います。
さて、実際の内容ですが、得点記入用紙には、@?3. と入っています。
@はフォーム表示命令
?は対戦結果の読み出し命令
3は対戦順を
.はENDです。
この読込により、得点記入用紙のデータをリーグ表から取り込んで表示させます。
次に、得点入力ですが、;R3 というような設定を入力します。
;入力コマンド命令
R右側(Lは左側、Mは引き分け)
3勝ち点(勝ちは3、引き分けは1、負けは0です)
入力された反対側は、計算で出ますので自動で入力を行います。
あとは、この入力されたデータをリーグ表に戻せば完了です。
途中、PrintOutが幾つかありますが、これはプロジェクタ等の掲示用で、JPEGデータを作成するためのものです。(仮想プリンタを使っています)
詳しいことは、OPTONの方で説明します。
このフォームは、データを呼び出さずに、得点入力をした時のキャンセル用です。
Private Sub CommandButton1_Enter()
Unload UserForm2
End Sub
Private Sub UserForm_Activate()
TextBox1.SetFocus
End Sub
;コマンドが入力された時に表示され、ひたすら入力を捨てます。
さて、次回は順位シートです。