実際に業務で使う(かもしれない)DBを想定し,独自のDBを作成して下さい.
まずは,どの業種向けの,どのような種類のDBなのかを考えてください.
そして,作成するDBの方向性が決まったら,まずはExcelを用いてDBの原型となる表を作成します.
表が作成出来たら正規化を行い,(リレーションを考えながら)複数の表に分割します.
後はACCESS上でテーブル~クエリ~フォーム・レポートを順番に作成していきます.
テーブル構成・クエリについては,Excelで作業している段階である程度確定しますが
フォーム・レポートについては,実際の業務の現場でどのように使われるかを想像しながら
作り込む事になりますので,皆さんの腕の見せ所です.
例)
・小売店向けの販売管理DB
→単なる集計表ではなく,消費税増税対応とすることで,使い勝手の良いDBとする.
・自分専用勤怠管理DB
→出席管理DBの応用版.勤怠の情報から,利用可能有給日数を表示.
・年賀状送付先管理DB
→毎年年末になると頭が痛い,年賀状の宛名書き.DBを使うことで常に最新の住所情報を使用.
2013年3月13日水曜日
2013年3月12日火曜日
追加課題(3/12)
追加課題1
「Q空き状況一覧」クエリに宿泊税(*1)込み金額を表示せよ.
宿泊税込み金額
追加課題2
「Q空き状況一覧」クエリにサービス料(*2),消費税(*3)込み金額を表示せよ.
宿泊税
サービス料
消費税
税込金額
(*1)本来宿泊税は東京都限定だが,今回は全国で一律に導入されているとする.宿泊税は宿泊料10,000円未満は0円,宿泊料10,000円以上15,000円未満は100円,15,000円以上は200円である.
(*2)サービス料は宿泊料の1割とする.
(*3)消費税は5%とする.
追加課題3
「F予約登録」フォーム,「R空き状況一覧」レポートに,税込金額を表示せよ.
「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空き状況一覧」レポートに,税込金額を表示せよ.
ラベル:
[2012]ExcelVBA
2013年3月6日水曜日
追加課題(3/6)
消費税増税に対応出来るようにせよ.
=Int([本体価格]*0.05)↓
=IIf([売上日]>="2014/04/01", Int([本体価格]*0.08), Int([本体価格]*0.05))
ラベル:
[2012]DB演習
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に変更する.
2.DB内で動的に消費税率を切り替えるようにする
2-1.IIf等の関数を用いてその場で適切な消費税を計算
「F売上明細」(サブフォーム)側では売上日が分からず,適用する消費税率が決められないので,「F売上伝票」(メインフォーム)側で消費税率を計算する.
「T消費税率」テーブルを新規で作成し,売上日を用いて「T消費税率」テーブル中の適用する消費税率を選択肢,税率計算で利用する.
現状では「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消費税率」テーブル中の適用する消費税率を選択肢,税率計算で利用する.
ラベル:
[2012]DB演習
2013年2月21日木曜日
追加課題(2/21)
出席日数から出席率を自動的に計算するアクセスのDBを作成する.
1.Excelにて,資料を参考に,DBの設計を行う.
2.Excel上で用意した複数の「テーブル」を,アクセス上に作成
アクセスファイルはこちら.
3.必要な項目を表示・計算するような「クエリ」を作成
4.日々の入力作業・確認作業が簡単に行えるような,使いやすい「フォーム」を作成
各テーブル,クエリ,フォーム,レポートについては,こちらのファイル(ver.2)を参照のこと.
必要出席数の算出は,こちらのファイル(ver.3)を参照のこと.
レポート画面まで含めたサンプルは,こちらのファイル(ver.5).
当日分出欠入力フォーム,今後一週間のスケジュールレポートを含めた最終的なサンプルは,こちらのファイル(ver.6).
1.Excelにて,資料を参考に,DBの設計を行う.
2.Excel上で用意した複数の「テーブル」を,アクセス上に作成
アクセスファイルはこちら.
3.必要な項目を表示・計算するような「クエリ」を作成
4.日々の入力作業・確認作業が簡単に行えるような,使いやすい「フォーム」を作成
各テーブル,クエリ,フォーム,レポートについては,こちらのファイル(ver.2)を参照のこと.
必要出席数の算出は,こちらのファイル(ver.3)を参照のこと.
レポート画面まで含めたサンプルは,こちらのファイル(ver.5).
当日分出欠入力フォーム,今後一週間のスケジュールレポートを含めた最終的なサンプルは,こちらのファイル(ver.6).
ラベル:
[2012]DB演習
2013年2月20日水曜日
追加課題(2/20)
P269
総合問題2 追加課題
1.「Q受注リスト」に「税込金額」フィールドを追加せよ.
ただし,税率は一律5%とする.
2.軽減税率導入に対応出来るようにせよ.
ただし,軽減税率は8%,それ以外の税率は10%とする.
今回の商品分類の中では,食料品(ハム,フルーツ,菓子,缶詰,茶,ジュース)のみ軽減税率の対象とする.
2-1.「T分類リスト」に「税率」フィールドを追加.
2-2.「Q受注リスト」の「税込金額」フィールドで,2-1で追加した税率を使って,税込金額を計算.
3.受注日により,自動的に税率を変更できるようにせよ.
3-1.まずは受注日によって処理を分岐し,表示するメッセージを切り替える.
3-2.メッセージが思った通りに表示できたら,メッセージの部分を税込金額の計算式に置き換える.
総合問題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) )
ラベル:
[2012]DB演習
2013年2月8日金曜日
追加課題(2/8)
今後消費税が以下のように変化すると仮定する.
※軽減税率は,食料品等生活必需品等が対象となるようです.
1.税抜金額を表示
2.標準税率の場合の税込金額を表示
3.軽減税率の場合の税込金額を表示
4.税率種別の表示
5.税率種別毎に税込金額を表示
6.リレーションを結んでいないテーブルのデータを参照
7.2015/10/1以降の消費税率を,税率フィールドの項目により自動的に判別し表示
8.売上日が2014/4/1以降か判別する
9.売上日が2015/10/1以降の場合も判別する
10.売上日・商品毎に適用される税率を表示
11.売上日・商品毎に適用される税率をテーブルから引っ張ってきて表示
(テーブルから税率を引っ張ってくることによって,急な税率変更にも対応出来るようにする)
12.売上日・商品毎に税率を適用し,実際の税込金額を表示
標準税率 | 軽減税率 | |
現在 | 5% | - |
2014/04/01 - | 8% | - |
2015/10/1 | 10% | 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'")) ) )
ラベル:
[2012]DB演習
2013年1月29日火曜日
追加課題(1/29)
月別販売データモジュール内の新規シート関数において,
月の入力で1~12以外の入力があった場合,
処理を中断するようにせよ.
→tuki変数の値が1~12の範囲内か否か?
月の入力で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
ラベル:
[2012]ExcelVBA
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
ラベル:
[2012]ExcelVBA
2013年1月16日水曜日
追加課題(1/16)
シート「商品リスト」において,商品を追加する際に使用する対話的なプログラムを作成せよ.
方針:InputBox関数を利用.追加課題(12/28)を参考に,商品リストの最終行に移動し,そこから入力を開始.入力したセルの周囲に罫線を引く.
1.商品リストの最終行左端に移動
2.InputBoxを実行し,ユーザーが入力した商品コードを受け取る
3.商品コードをセルに書き込む
4.セルの周囲に罫線を引く
5.一つ右のセルに移動
(2~5を繰り返す)
6.完成!
6-1.素直に繰り返した場合
6-2.データの受付を最初に行い,まとめて書き込みを行う場合
6-3.二次元配列を用いてデータを格納した場合
6-4.プログラム内の同じ処理を行う部分をまとめた場合
6-5.ループを1つにまとめた場合
方針: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
ラベル:
[2012]ExcelVBA
追加課題(1/15)
色検索プログラムをIf文のみで実装せよ.
(P168 MsgBox関数の戻り値参照)
輸入国検索プログラムも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
ラベル:
[2012]ExcelVBA
登録:
投稿 (Atom)