マイクロソフトアクセスのまとめ記事はこちら
人気ブログランキングへ
入場券のVBA
VBAの内容ですが
kai = 2 ・・・会員一覧の最初は2行目なので「2」に設定
nyu = 8 ・・・入場券の最初の名前の位置は8行目なので「8」に設定
If Sheets("会員一覧").Cells(kai, 6) = "" Then ・・・2行目の発券日に記載があるかどうか
Sheets("入場券").Cells(nyu, 5).Value = Sheets("会員一覧").Cells(kai, 2)
・・・発券日に記載がない場合は入場券の1枚目の名前欄に最初の名前を入力
If Sheets("会員一覧").Cells(kai, 4) = "幼児" Then
・・・会員一覧の年齢欄に「幼児」となっている場合は
Sheets("入場券").Cells(nyu, 14).Value = Sheets("会員一覧").Cells(kai, 4) & "・保護者必要"
・・・幼児の幼児の場合は年齢欄に「幼児・保護者必要」と記載
ElseIf Sheets("会員一覧").Cells(kai, 4) = "小*" Then
・・・小学生の場合
Sheets("入場券").Cells(nyu, 14).Value = Sheets("会員一覧").Cells(kai, 4) & "・保護者必要"
・・・小学生も保護者必要
Else
Sheets("入場券").Cells(nyu, 14).Value = Sheets("会員一覧").Cells(kai, 4)
・・・上記以外は年齢コピー
End If
End If
上のVBAの流れは分かると思います。
会員一覧の名簿の1行目(エクセルシート上は2行目)の発券日を確認して、
発券日が記載されている場合はこの「If」は終了して一番下の「End If」まで飛び終了します。
発券日が記載されていない場合は次の行へ進み、名簿の1番目の名前を入場券の1枚目にコピーします。
次に年齢欄を見ていき、「幼児」の場合は、入場券の年齢欄に「幼児」+「・保護者必要」と記載する。
小学生の場合は学年と保護者必要となる。
幼児と小学生以外は年齢がそのまま記載される。
という流れです。分かりますか。
これが基本のVBAです。
入場券が1ページの6枚あるので同じようなVBAを6回書けばいいのですが、
それではあまりにも芸がないので、「繰り返し」(ループ)を使ってみましょう。
以前For〜NextとかDo〜Loopとか説明したと思います。
繰り返す回数が決まっている場合はFor〜Nextが良いのですが、
今回の場合は会員数が増える場合も想定するとDo〜Loopの方が
条件的には好ましいと思います。
別にFor〜Nextで繰り返す回数を多めに見積もって使用しても問題ないです。
私は比較的For〜Nextが好きなので良くこちらを利用します。
頭にDo While Sheets("会員一覧").Cells(kai, 1) <> ""を追記して
End Ifの後に
kai = kai + 1
Loopを追記しました。
Cells(kai, 1) <> ""は条件式で会員一覧の1列目の会員番号が記載されているところまで
ループするということです。
「””」は空白とか未記入とかという意味です。
但し上のVBAを実行すると入場券の1枚目だけが変化するだけで2枚目以降に入力されません。
タグ: エクセル,入場券