2013年3月13日水曜日

最終課題(独自DBの作成)

実際に業務で使う(かもしれない)DBを想定し,独自のDBを作成して下さい.

まずは,どの業種向けの,どのような種類のDBなのかを考えてください.
そして,作成するDBの方向性が決まったら,まずはExcelを用いてDBの原型となる表を作成します.
表が作成出来たら正規化を行い,(リレーションを考えながら)複数の表に分割します.
後はACCESS上でテーブル~クエリ~フォーム・レポートを順番に作成していきます.

テーブル構成・クエリについては,Excelで作業している段階である程度確定しますが
フォーム・レポートについては,実際の業務の現場でどのように使われるかを想像しながら
作り込む事になりますので,皆さんの腕の見せ所です.

例)
・小売店向けの販売管理DB
→単なる集計表ではなく,消費税増税対応とすることで,使い勝手の良いDBとする.

・自分専用勤怠管理DB
→出席管理DBの応用版.勤怠の情報から,利用可能有給日数を表示.

・年賀状送付先管理DB
→毎年年末になると頭が痛い,年賀状の宛名書き.DBを使うことで常に最新の住所情報を使用.

2013年3月12日火曜日

追加課題(3/12)

追加課題1
「Q空き状況一覧」クエリに宿泊税(*1)込み金額を表示せよ.

宿泊税込み金額
宿泊税込み金額: IIf([基本料金]>=15000, [基本料金]+200, IIf([基本料金]>=10000, [基本料金]+100, [基本料金]))


追加課題2
「Q空き状況一覧」クエリにサービス料(*2),消費税(*3)込み金額を表示せよ.

宿泊税
宿泊税: IIf([基本料金]>=15000, 200, IIf([基本料金]>=10000, 100, 0))

サービス料
サービス料:[基本料金]*0.1

消費税
消費税:[基本料金]*0.05

税込金額
税込金額:[基本料金]+[宿泊税]+[サービス料]+[消費税]


(*1)本来宿泊税は東京都限定だが,今回は全国で一律に導入されているとする.宿泊税は宿泊料10,000円未満は0円,宿泊料10,000円以上15,000円未満は100円,15,000円以上は200円である.

(*2)サービス料は宿泊料の1割とする.

(*3)消費税は5%とする.


追加課題3
「F予約登録」フォーム,「R空き状況一覧」レポートに,税込金額を表示せよ.

2013年3月6日水曜日

追加課題(3/6)

消費税増税に対応出来るようにせよ.
=Int([本体価格]*0.05)
=IIf([売上日]>="2014/04/01", Int([本体価格]*0.08), Int([本体価格]*0.05))

2013年3月5日火曜日

追加課題(3/5)

P139-165 メインサブフォーム
現状では「F売上明細」中の消費税計算が5%固定になっているが,消費税率が8%,10%に増税された場合,DBとしてどのような対応が考えられるのか?
みなさん自身の判断で,増税対応を行ってください.


1.時期が来たら使用するDB自体を切り替える(切り替え後のDBは消費税率が8%,もしくは10%)
1-1.消費税率が切り替わるまでは現状のDBを使用し,消費税率が切り替わったら消費税率の計算部分の数字を0.05から0.08に書き換えたDBに変更する.
=Int([合計金額]*0.05)
=Int([合計金額]*0.08)

2.DB内で動的に消費税率を切り替えるようにする
2-1.IIf等の関数を用いてその場で適切な消費税を計算

「F売上明細」(サブフォーム)側では売上日が分からず,適用する消費税率が決められないので,「F売上伝票」(メインフォーム)側で消費税率を計算する.
=IIf([売上日]>="2014/04/01", "増税後", "増税前")
=IIf([売上日]>="2014/04/01", Int([売上明細].[Form]![合計金額]*0.08), Int([売上明細].[Form]![合計金額]*0.05))
2-2.時期による消費税率の違いを記した「T消費税率」のようなテーブルを新規に作成し,消費税計算を行う際は都度参照する.
「T消費税率」テーブルを新規で作成し,売上日を用いて「T消費税率」テーブル中の適用する消費税率を選択肢,税率計算で利用する.

2013年2月21日木曜日

追加課題(2/21)

出席日数から出席率を自動的に計算するアクセスのDBを作成する.

1.Excelにて,資料を参考に,DBの設計を行う.

2.Excel上で用意した複数の「テーブル」を,アクセス上に作成
アクセスファイルはこちら

3.必要な項目を表示・計算するような「クエリ」を作成

4.日々の入力作業・確認作業が簡単に行えるような,使いやすい「フォーム」を作成

各テーブル,クエリ,フォーム,レポートについては,こちらのファイル(ver.2)を参照のこと.

必要出席数の算出は,こちらのファイル(ver.3)を参照のこと.

レポート画面まで含めたサンプルは,こちらのファイル(ver.5).


当日分出欠入力フォーム,今後一週間のスケジュールレポートを含めた最終的なサンプルは,こちらのファイル(ver.6).

2013年2月20日水曜日

追加課題(2/20)

P269
総合問題2 追加課題
1.「Q受注リスト」に「税込金額」フィールドを追加せよ.
ただし,税率は一律5%とする.
税込金額: [金額]*(1.05)


2.軽減税率導入に対応出来るようにせよ.
ただし,軽減税率は8%,それ以外の税率は10%とする.
今回の商品分類の中では,食料品(ハム,フルーツ,菓子,缶詰,茶,ジュース)のみ軽減税率の対象とする.

2-1.「T分類リスト」に「税率」フィールドを追加.

2-2.「Q受注リスト」の「税込金額」フィールドで,2-1で追加した税率を使って,税込金額を計算.
税込金額: [金額]*(1+[税率]/100)


3.受注日により,自動的に税率を変更できるようにせよ.
3-1.まずは受注日によって処理を分岐し,表示するメッセージを切り替える.
受注日判定:IIf(
 Format([受注日],"yyyy/mm/dd")>="2015/10/01",
 "2015/10/1以降",
 "2015/10/1以前"
)

3-2.メッセージが思った通りに表示できたら,メッセージの部分を税込金額の計算式に置き換える.
税込金額(受注日考慮):IIf(
 Format([受注日],"yyyy/mm/dd")>="2015/10/01",
 [金額]*(1+[税率]/100),
 [金額]*(1+5/100)
)

2013年2月8日金曜日

追加課題(2/8)

今後消費税が以下のように変化すると仮定する.
標準税率軽減税率
現在5%-
2014/04/01 - 8%-
2015/10/110%8%
※軽減税率は,食料品等生活必需品等が対象となるようです.


1.税抜金額を表示
税抜金額: [単価]*[数量]


2.標準税率の場合の税込金額を表示
標準税率税込金額: [単価]*[数量]*1.05


3.軽減税率の場合の税込金額を表示
軽減税率税込金額: [単価]*[数量]*1.08


4.税率種別の表示
税率種別: IIf(
 [税率]='軽減',
 "軽減税率",
 "標準税率"
)


5.税率種別毎に税込金額を表示
税込金額: IIf(
 [税率]='軽減',
 [単価]*[数量]*1.05,
 [単価]*[数量]*1.08
)


6.リレーションを結んでいないテーブルのデータを参照
税率種別(標準): DLookUp(
 "[T消費税率].[消費税率]",
 "T消費税率",
 "[ID] = '3'"
)
税率種別(軽減): DLookUp(
 "[T消費税率(軽減)].[消費税率]",
 "T消費税率(軽減)",
 "[ID] = '3'"
)


7.2015/10/1以降の消費税率を,税率フィールドの項目により自動的に判別し表示
税込金額: IIf(
 [税率]='軽減',
 DLookUp("[T消費税率(軽減)].[消費税率]","T消費税率(軽減)","[ID] = '3'"),
 DLookUp("[T消費税率].[消費税率]","T消費税率","[ID] = '3'")
)


8.売上日が2014/4/1以降か判別する
売上日判別1: IIf(
 Format([売上日],"yyyy/mm/dd")>="2014/04/01",
 "2014/4/1以降",
 "2014/4/1以前"
)


9.売上日が2015/10/1以降の場合も判別する
売上日判別2: IIf(
 Format([売上日],"yyyy/mm/dd")>="2014/04/01",
 IIf(
  Format([売上日],"yyyy/mm/dd")>="2015/10/01",
  "2015/10/1以降",
  "2014/4/1~2015/9/30"
 ),
 "2014/4/1以前"
)


10.売上日・商品毎に適用される税率を表示
適用税率1: IIf(
 Format([売上日],"yyyy/mm/dd")>="2014/04/01",
 IIf(
  Format([売上日],"yyyy/mm/dd")>="2015/10/01",
  IIF(
   [税率]="軽減",
   "8%",
   "10%"
  ),
  "8%"
 ),
 "5%"
)


11.売上日・商品毎に適用される税率をテーブルから引っ張ってきて表示
(テーブルから税率を引っ張ってくることによって,急な税率変更にも対応出来るようにする)
適用税率2: IIf(
 Format([売上日],"yyyy/mm/dd")>="2014/04/01",
 IIf(
  Format([売上日],"yyyy/mm/dd")>="2015/10/01",
  IIF([税率]="軽減",
   DLookUp("[T消費税率(軽減)].[消費税率]","T消費税率(軽減)","[ID] = '3'"),
   DLookUp("[T消費税率].[消費税率]","T消費税率","[ID] = '3'")
  ),
  IIF([税率]="軽減",
   DLookUp("[T消費税率(軽減)].[消費税率]","T消費税率(軽減)","[ID] = '2'"),
   DLookUp("[T消費税率].[消費税率]","T消費税率","[ID] = '2'")
  )
 ),
 IIF([税率]="軽減",
  DLookUp("[T消費税率(軽減)].[消費税率]","T消費税率(軽減)","[ID] = '1'"),
  DLookUp("[T消費税率].[消費税率]","T消費税率","[ID] = '1'")
 )
)


12.売上日・商品毎に税率を適用し,実際の税込金額を表示
税込金額(売上日考慮): IIf(
 Format([売上日],"yyyy/mm/dd")>="2014/04/01",
 IIf(
  Format([売上日],"yyyy/mm/dd")>="2015/10/01",
  IIF([税率]="軽減",
   [単価]*[数量]*0.01*(100+DLookUp("[T消費税率(軽減)].[消費税率]","T消費税率(軽減)","[ID] = '3'")),
   [単価]*[数量]*0.01*(100+DLookUp("[T消費税率].[消費税率]","T消費税率","[ID] = '3'"))
  ),
  IIF([税率]="軽減",
   [単価]*[数量]*0.01*(100+DLookUp("[T消費税率(軽減)].[消費税率]","T消費税率(軽減)","[ID] = '2'")),
   [単価]*[数量]*0.01*(100+DLookUp("[T消費税率].[消費税率]","T消費税率","[ID] = '2'"))
  )
 ),
 IIF([税率]="軽減",
  [単価]*[数量]*0.01*(100+DLookUp("[T消費税率(軽減)].[消費税率]","T消費税率(軽減)","[ID] = '1'")),
  [単価]*[数量]*0.01*(100+DLookUp("[T消費税率].[消費税率]","T消費税率","[ID] = '1'"))
 )
)

2013年1月29日火曜日

追加課題(1/29)

月別販売データモジュール内の新規シート関数において,
月の入力で1~12以外の入力があった場合,
処理を中断するようにせよ.

→tuki変数の値が1~12の範囲内か否か?

Sub 新規シート()
    Dim tuki As String
    ActiveSheet.Copy after:=ActiveSheet
    Range("C6:D15,F6:F15,J6:J15").Select
    Selection.ClearContents
    Range("A1").Select
    tuki = InputBox("月を半角の数字で入力してください", "新規シート作成")
    If tuki = "" Then
        Application.DisplayAlerts = False
        ActiveSheet.Delete
        Application.DisplayAlerts = True
    Else
        If tuki < 0 Or tuki > 12 Then
            MsgBox "月は1~12の範囲で入力してください"
            Application.DisplayAlerts = False
            ActiveSheet.Delete
            Application.DisplayAlerts = True
        Else
            On Error Resume Next
            ActiveSheet.Name = tuki & "月度"
            If Err.Number = 1004 Then
                MsgBox "シート名が重複します"
                Application.DisplayAlerts = False
                ActiveSheet.Delete
                Application.DisplayAlerts = True
            End If
        End If
    End If
End Sub

2013年1月23日水曜日

追加課題(1/23)

シート「6月度」(販売一覧)の販売データを入力するプログラムにおいて,キャンセルボタンを押すことで処理を中断できるようにせよ.
Sub 入力()
    Dim hiduke As String
    ActiveWindow.NewWindow
    ActiveWindow.NewWindow
    Windows.Arrange ArrangeStyle:=xlTiled
    Windows("第6章.xlsm:2").Activate
    Sheets("得意先リスト").Select
    Windows("第6章.xlsm:1").Activate
    Sheets("商品リスト").Select
    Windows("第6章.xlsm:3").Activate
    If Range("C6").Value = "" Then
        Range("C6").Select
    Else
        Range("C5").Select
        Selection.End(xlDown).Select
        ActiveCell.Offset(1, 0).Select
    End If
    Do While ActiveCell.Offset(0, -1).Value <> ""
        
        hiduke = InputBox("日付を入力してください" & Chr(13) & "日付入力を終了する場合にはキャンセルボタンを押してください", , , 200, 200)
        If hiduke = "" Then
            MsgBox "入力をキャンセルします(1)"
            Exit Do
        Else
            ActiveCell.FormulaR1C1 = hiduke
            ActiveCell.Offset(O, 1).Range("A1").Select
                
            hiduke = InputBox("得意先コードを入力してください", , , 200, 200)
            If hiduke = "" Then
                MsgBox "入力をキャンセルします(2)"
                Exit Do
            Else
                ActiveCell.FormulaR1C1 = hiduke
                ActiveCell.Offset(O, 2).Range("A1").Select


                hiduke = InputBox("商品コードを入力してください", , , 200, 200)
                If hiduke = "" Then
                    MsgBox "入力をキャンセルします(3)"
                    Exit Do
                Else
                    ActiveCell.FormulaR1C1 = hiduke
                    ActiveCell.Offset(O, 4).Range("A1").Select

                    hiduke = InputBox("数量を入力してください", , , 200, 200)
                    If hiduke = "" Then
                        MsgBox "入力をキャンセルします(4)"
                        Exit Do
                    Else
                        ActiveCell.FormulaR1C1 = hiduke
                        ActiveCell.Offset(1, -7).Range("A1").Select
                    End If
                End If
            End If
        End If
    Loop
    Windows("第6章.xlsm:2").Activate
    ActiveWindow.Close
    Windows("第6章.xlsm:1").Activate
    ActiveWindow.Close
    ActiveWindow.WindowState = xlMaximized
End Sub

2013年1月16日水曜日

追加課題(1/16)

シート「商品リスト」において,商品を追加する際に使用する対話的なプログラムを作成せよ.
方針: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

追加課題(1/15)

色検索プログラムをIf文のみで実装せよ.
(P168 MsgBox関数の戻り値参照)
Sub 色検索()
    Dim iro As Integer
    iro = MsgBox("ワインの色は赤ですか?", vbYesNo)
    If iro = 6 Then
        Range("B5").Select
        Selection.AutoFilter 3, "赤"
    Else
        iro = MsgBox("ワインの色は白ですか?", vbYesNo)
        If iro = 6 Then
            Range("B5").Select
            Selection.AutoFilter 3, "白"
        Else
            iro = MsgBox("ワインの色はロゼですか?", vbYesNo)
            If iro = 6 Then
                Range("B5").Select
                Selection.AutoFilter 3, "ロゼ"
            Else
                MsgBox "選択が間違っています" & Chr(13) & _
                "赤、白、ロゼの中から選択してください", vbOKOnly + vbExclamation
            End If
        End If
    End If
End Sub


輸入国検索プログラムもIf文のみで実装せよ.
Sub 輸入国検索()
    Dim kuni As Integer
    kuni = MsgBox("輸入国はイタリアですか?", vbYesNo)
    If kuni = 6 Then
        Range("B5").Select
        Selection.AutoFilter 5, "イタリア"
    Else
        kuni = MsgBox("輸入国はフランスですか?", vbYesNo)
        If kuni = 6 Then
            Range("B5").Select
            Selection.AutoFilter 5, "フランス"
        Else
            MsgBox "入力が間違っています" & Chr(13) & _
        "イタリア,フランスのいずれかを入力してください", vbOKOnly + vbExclamation
        End If
    End If
End Sub