シート「商品リスト」において,商品を追加する際に使用する対話的なプログラムを作成せよ.
方針:InputBox関数を利用.追加課題(12/28)を参考に,商品リストの最終行に移動し,そこから入力を開始.入力したセルの周囲に罫線を引く.
1.商品リストの最終行左端に移動
Sub 商品追加()
Range("B5").Select
Do While Not (ActiveCell.Value = "")
ActiveCell.Offset(1, 0).Select
Loop
End Sub
2.InputBoxを実行し,ユーザーが入力した商品コードを受け取る
Dim syouhinCode As String
syouhinCode = InputBox("商品コードを入力してください", "商品追加", , 100, 100)
3.商品コードをセルに書き込む
ActiveCell.Value = syouhinCode
4.セルの周囲に罫線を引く
ActiveCell.BorderAround ColorIndex:=1
5.一つ右のセルに移動
ActiveCell.Offset(0, 1).Select
(2~5を繰り返す)
6.完成!
6-1.素直に繰り返した場合
Sub 商品追加()
'表の最終行に移動
Range("B5").Select
Do While Not (ActiveCell.Value = "")
ActiveCell.Offset(1, 0).Select
Loop
'商品コードを入力
Dim syouhinCode As String
syouhinCode = InputBox("商品コードを入力してください", "商品追加", , 100, 100)
ActiveCell.Value = syouhinCode
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
'商品名を入力
syouhinCode = InputBox("商品名を入力してください", "商品追加", , 100, 100)
ActiveCell.Value = syouhinCode
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
'色を入力
syouhinCode = InputBox("色を入力してください", "商品追加", , 100, 100)
ActiveCell.Value = syouhinCode
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
'単価を入力
syouhinCode = InputBox("単価を入力してください", "商品追加", , 100, 100)
ActiveCell.Value = syouhinCode
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
'輸入国を入力
syouhinCode = InputBox("輸入国を入力してください", "商品追加", , 100, 100)
ActiveCell.Value = syouhinCode
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
'入荷状況を入力
syouhinCode = InputBox("入荷状況を入力してください", "商品追加", , 100, 100)
ActiveCell.Value = syouhinCode
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
End Sub
6-2.データの受付を最初に行い,まとめて書き込みを行う場合
Sub 商品追加()
'表の最終行に移動
Range("B5").Select
Do While Not (ActiveCell.Value = "")
ActiveCell.Offset(1, 0).Select
Loop
'商品コードを受付
Dim syouhinCode As String
syouhinCode = InputBox("商品コードを入力してください", "商品追加", , 100, 100)
'商品名を受付
Dim syouhinName As String
syouhinName = InputBox("商品名を入力してください", "商品追加", , 100, 100)
'色を受付
Dim syouhinColor As String
syouhinColor = InputBox("色を入力してください", "商品追加", , 100, 100)
'単価を受付
Dim syouhinTanka As String
syouhinTanka = InputBox("単価を入力してください", "商品追加", , 100, 100)
'輸入国を受付
Dim syouhinYunyuu As String
syouhinYunyuu = InputBox("輸入国を入力してください", "商品追加", , 100, 100)
'入荷状況を受付
Dim syouhinNyuuka As String
syouhinNyuuka = InputBox("入荷状況を入力してください", "商品追加", , 100, 100)
'商品コードを書込
ActiveCell.Value = syouhinCode
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
'商品名を書込
ActiveCell.Value = syouhinName
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
'色を書込
ActiveCell.Value = syouhinColor
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
'単価を書込
ActiveCell.Value = syouhinTanka
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
'輸入国を書込
ActiveCell.Value = syouhinYunyuu
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
'入荷状況を書込
ActiveCell.Value = syouhinNyuuka
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
End Sub
6-3.二次元配列を用いてデータを格納した場合
Sub 商品追加()
'表の最終行に移動
Range("B5").Select
Do While Not (ActiveCell.Value = "")
ActiveCell.Offset(1, 0).Select
Loop
Dim shouhin(5, 1) As String
shouhin(0, 0) = ""
shouhin(0, 1) = "商品コード"
shouhin(1, 0) = ""
shouhin(1, 1) = "商品名"
shouhin(2, 0) = ""
shouhin(2, 1) = "色"
shouhin(3, 0) = ""
shouhin(3, 1) = "単価"
shouhin(4, 0) = ""
shouhin(4, 1) = "輸入国"
shouhin(5, 0) = ""
shouhin(5, 1) = "入荷状況"
'商品コードを受付
shouhin(0, 0) = InputBox("商品コードを入力してください", "商品追加", , 100, 100)
'商品名を受付
shouhin(1, 0) = InputBox("商品名を入力してください", "商品追加", , 100, 100)
'色を受付
shouhin(2, 0) = InputBox("色を入力してください", "商品追加", , 100, 100)
'単価を受付
shouhin(3, 0) = InputBox("単価を入力してください", "商品追加", , 100, 100)
'輸入国を受付
shouhin(4, 0) = InputBox("輸入国を入力してください", "商品追加", , 100, 100)
'入荷状況を受付
shouhin(5, 0) = InputBox("入荷状況を入力してください", "商品追加", , 100, 100)
'商品コードを書込
ActiveCell.Value = shouhin(0, 0)
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
'商品名を書込
ActiveCell.Value = shouhin(1, 0)
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
'色を書込
ActiveCell.Value = shouhin(2, 0)
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
'単価を書込
ActiveCell.Value = shouhin(3, 0)
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
'輸入国を書込
ActiveCell.Value = shouhin(4, 0)
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
'入荷状況を書込
ActiveCell.Value = shouhin(5, 0)
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
End Sub
6-4.プログラム内の同じ処理を行う部分をまとめた場合
Sub 商品追加()
'表の最終行に移動
Range("B5").Select
Do While Not (ActiveCell.Value = "")
ActiveCell.Offset(1, 0).Select
Loop
Dim shouhin(5, 1) As String
shouhin(0, 0) = ""
shouhin(0, 1) = "商品コード"
shouhin(1, 0) = ""
shouhin(1, 1) = "商品名"
shouhin(2, 0) = ""
shouhin(2, 1) = "色"
shouhin(3, 0) = ""
shouhin(3, 1) = "単価"
shouhin(4, 0) = ""
shouhin(4, 1) = "輸入国"
shouhin(5, 0) = ""
shouhin(5, 1) = "入荷状況"
'データの受取
Dim i As Integer
For i = 0 To 5
shouhin(i, 0) = InputBox(shouhin(i, 1) + "を入力してください", "商品追加", , 100, 100)
Next i
'データの書込
Dim j As Integer
For j = 0 To 5
ActiveCell.Value = shouhin(j, 0)
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
Next j
End Sub
6-5.ループを1つにまとめた場合
Sub 商品追加()
'表の最終行に移動
Range("B5").Select
Do While Not (ActiveCell.Value = "")
ActiveCell.Offset(1, 0).Select
Loop
Dim shouhin(5, 1) As String
shouhin(0, 0) = ""
shouhin(0, 1) = "商品コード"
shouhin(1, 0) = ""
shouhin(1, 1) = "商品名"
shouhin(2, 0) = ""
shouhin(2, 1) = "色"
shouhin(3, 0) = ""
shouhin(3, 1) = "単価"
shouhin(4, 0) = ""
shouhin(4, 1) = "輸入国"
shouhin(5, 0) = ""
shouhin(5, 1) = "入荷状況"
Dim i As Integer
For i = 0 To 5
shouhin(i, 0) = InputBox(shouhin(i, 1) + "を入力してください", "商品追加", , 100, 100)
ActiveCell.Value = shouhin(i, 0)
ActiveCell.BorderAround ColorIndex:=1
ActiveCell.Offset(0, 1).Select
Next i
End Sub