• 検索結果がありません。

万年暦プログラム

N/A
N/A
Protected

Academic year: 2021

シェア "万年暦プログラム"

Copied!
10
0
0

読み込み中.... (全文を見る)

全文

(1)

プログラムの概要

テキストボックスで指定した年月日より、オプションボタンで 日付が選択されて居る場合は、何年、又は、何箇月、又は、何 日、又は、何週後、又は、前の日付を求める。 亦、オプションボタンで日数が選択されて居る場合は、更にテ キストボックスで指定した年月日迄の日数を求める。 オプションボタンの選択状況に依り、入力欄の有効・無効を切 り替えると共に、コマンドボタンのキャプションを書き換えて、 操作性を高める様にして居る。

暦カルキュレータ

VB⑧ □ 単純変数の宣言(Dim) □ 標準コントロールの利用(Frame、Label、Text、Combo、Command、Option) □ プロパティの値の取得と設定(Value、ListIndex、Caption、SelStart、selLength 等) □ イベントの利用(Load、Click、GotFocus) □ メソッドの利用(SetFocus) □ ステートメントの利用(Unload、End、Exit Sub) □ 組込関数(型変換)の利用(CInt、CLng) □ 組込関数(日付時間)の利用(Year、Month、Day、DateSerial、DateAdd、DateDiff、Date) □ 組込関数(評価)の利用(IsNumeric、IsDate) □ 演算子(代入演算子、算術演算子、結合演算子)

□ 制御構造構文(条件分岐 If ~ Then、Select case、ループ処理 For ~ Next) 今回の課題項目

□ If文に依る条件分岐(If ~ Then … Else … End If)

□ For文に依るループ処理(For counter=start To end : … : Next counter) □ Select Case文に依るループ処理(Select Case: Case … : End Select) □ 評価関数(IsNumeric、Isate) □ 日付と時間を扱う関数(Year、Month、Day、DateSerial、DateAdd、DateDiff) 今回の重点項目 □ 日付計算だけで無く、時間計算も出来る様に拡張する。 □ テキストボックスへの入力に於けるマンマシンインターフェイスを改良する。 今回の応用項目

(2)

■ オブジェクト・プロパティ一覧 ■ コントロールの種類 プロパティ プロパティの設定値 フォーム オブジェクト名 Form1 Caption 暦カルキュレータ フレーム1 オブジェクト名 fraDate Caption 日付計算 フレーム2 オブジェクト名 fraParam Caption 空白 ラベル1 オブジェクト名 lblDate Index 0~7(コントロール配列) Caption 西暦、年、月、日より、西暦、年、月、日迄 Font MS明朝,太字,12 テキストボックス オブジェクト名 txtDate Index 0~6(コントロール配列) Alignment 1-右揃え Text、Font 空白(MS明朝,太字,14) IMEMode 3-オフ固定 コンボボックス オブジェクト名 cmbDate List、Font 年、月、日、週(MS明朝,太字,14) フレーム3 オブジェクト名 fraBeforeAfter Caption 空白 オプション1 オブジェクト名 optMethod Index 0~1(コントロール配列) caption 日付、日数 ラベル2 オプション3 フレーム1 コマンドボタン1 オプション1 コントロール配列 (0~1) コンボボックス コマンドボタン2 フレーム2 ラベル1 コントロール配列 (0~7) テキスト コントロール配列 (0~6) フレーム3 オプション2

(3)

コントロールの種類 プロパティ プロパティの設定値 オプション2 オブジェクト名 optBefore Caption 前 オプション3 オブジェクト名 optAfter Caption 後 Value True コマンドボタン1 オブジェクト名 cmdDate Caption 、Font を求める(MS明朝,太字,12) コマンドボタン2 オブジェクト名 cmdFinish Caption 、Font 終了(MS明朝,太字,12) ラベル2 オブジェクト名 lblDateDisp Appearance 0-フラット BorderStyle 1-実線 Caption、Font 空白(MS明朝,太字,20) フレーム 他のコントロールをグループ化するコントロール。通常、チェックボックスやオプションボ タンと共に使用し、フレーム自体は、特定の機能を持たない。 ラベル テキストを表示するコントロール。此のテキストは、ユーザーが直接入力したり変更したり する事は出来ない。 テキストボックス テキストの入力や表示を行うコントロール。此のテキストは、ユーザーが直接入力したり変 更したりする事が出来る。 コンボボックス 選択肢の一覧を表示するコントロール。此の一覧より値を選択する事と、テキストボックス に直接値を入力する事が出来る。 コマンドボタン ユーザーが選択したコマンド(命令)や操作を実行するコントロール。OKボタンや実行ボ タン等、処理の開始や中断・終了の合図に用いられ、最も良く利用されるコントロールです。 オプションボタン 複数の選択肢の中から1個だけを選択するコントロール。チェックボックスとは異なり、1 個のグループの中で選択出来るオプションボタンは1個だけで有る。 表示を整形する便利な関数 1.Format :指定した書式に変換する関数 2.StrConv :文字列を変換する関数 Format 関数の詳細は、オンラインヘルプで当該関数を表示し、関連項目、例えば、『数値表示書式 指定文字』や『文字列表示書式指定文字』や『日付/時刻表示書式指定文字』を参照して下さい。 亦、StrConv 関数では、『大文字/小文字』や『全角/半角』や『ひらがな/カタカナ』等の相互 変換を行う事が出来る。

(4)

■ プログラムリスト ■

Option Explicit

Private Opt(3) As String

' フォームが読み込まれた時の処理 Private Sub Form_Load( ) Dim I As Integer

txtDate(0).Text = Year(Date) txtDate(1).Text = Month(Date) txtDate(2).Text = Day(Date)

Opt(0) = "yyyy": Opt(1) = "m": Opt(2) = "d": Opt(3) = "ww"

For I = 4 To 7: lblDate(I).Enabled = False: Next I For I = 4 To 6: txtDate(I).Enabled = False: Next I End Sub

' オプションボタン(日付・日数)がクリックされた時の処理 Private Sub optMethod_Click(Index As Integer)

Dim I As Integer

Select Case Index Case 0

txtDate(3).Enabled = True cmbDate.Enabled = True optBefore.Enabled = True optAfter.Enabled = True

For I = 4 To 7: lblDate(I).Enabled = False: Next I For I = 4 To 6: txtDate(I).Enabled = False: Next I cmdDate.Caption = "の日付を求める" Case 1 txtDate(3).Enabled = False cmbDate.Enabled = False optBefore.Enabled = False optAfter.Enabled = False

For I = 4 To 7: lblDate(I).Enabled = True: Next I For I = 4 To 6: txtDate(I).Enabled = True: Next I cmdDate.Caption = "の日数を求める"

End Select End Sub

' テキストボックスがフォーカスを得た時の処理 Private Sub txtDate_GotFocus(Index As Integer) txtDate(Index).SelStart = 0 txtDate(Index).SelLength = Len(txtDate(Index).Text) End Sub 此処で宣言した変数は同じ フォーム内の総てのサブプ ロシージャで値の参照と設 定を行う事が出来る。 此処で宣言した変数は宣言 したサブプロシージャ内で しか値の参照と設定を行う 事が出来ない。 此のループ処理ではカウン ターIの値を4から7に1 ずつ変化させて、Next迄 の処理を繰り返し行う。 現在の日付Date から年月日 を夫々れ Year 関数、Month 関数、day 関数で取得し、テ キストボックスに設定。 オプションボタンで日付が 選択されて居る場合の設定 を行う。 オプションボタンで日数が 選択されて居る場合の設定 を行う。 テキストボックスがフォー カスを持った時、テキストボ ックス内の総ての文字列を 選択状態に仕て居る。此れに 依り、既に入力されて居る文 字列を消去せずに、新しい文 字列を入力する事が出来る。

(5)

' コマンドボタン(終了)がクリックされた時の処理 Private Sub cmdFinish_Click( )

Unload Me: End End Sub

' コマンドボタンがクリックされた時の処理 Private Sub cmdDate_Click( )

Dim Y As Integer, M As Integer, D As Integer Dim T1 As Date, T2 As Date

Dim X As Long, S As String

' 起算日を求める

Y = CInt(txtDate(0).Text) M = CInt(txtDate(1).Text) D = CInt(txtDate(2).Text)

If Not IsDate(Str$(Y) & "/" & Str$(M) & "/" & Str$(D)) Then Exit Sub

End If

T1 = DateSerial(Y, M, D)

If optMethod(0).Value = True Then ' 指定した日数を加算した日付を求める If IsNumeric(txtDate(3).Text) Then X = CLng(txtDate(3).Text) If optBefore.Value = True Then X = X * (-1)

End If Else

txtDate(3).SetFocus: Exit Sub End If

If cmbDate.ListIndex < 0 Then cmbDate.SetFocus: Exit Sub Else

S = Opt(cmbDate.ListIndex) End If

lblDateDisp.Caption = Format(DateAdd(S, X, T1), "yyyy 年 mm 月 dd 日") Else

' 日付の時間間隔を求める Y = CInt(txtDate(4).Text) M = CInt(txtDate(5).Text) D = CInt(txtDate(6).Text)

If Not IsDate(Str$(Y) & "/" & Str$(M) & "/" & Str$(D)) Then Exit Sub End If T2 = DateSerial(Y, M, D) lblDateDisp.Caption = Format(DateDiff("d", T1, T2), "#####日") End If End Sub アプリケーションを終了す る場合、正しくプログラムを メモリから消去して終了す る事が望ましい。 書式を指定した形式に変換 するには、Format 関数を使 用すると便利である。 此処で宣言した変数は宣言 したサブプロシージャ内で しか値の参照と設定を行う 事が出来ない。 此の様に、カンマで区切り複 数の変数を1行で宣言する 事も出来る。 IsDate 関数は、引数で与えら れた文字列が日付と仕て評 価出来るかを調べる。 猶、夫々れのテキストボック スの入力値が数値と仕て評 価出来るか IsNumeric 関数 で調べて置く事が望ましい。

(6)

If文に依る条件分岐 論理式の条件判断を行うステートメント 単一行形式① If 論理式 Then 論理式が真の場合の処理 単一行形式② If 論理式 Then 論理式が真の場合の処理 Else 論理式が偽の場合の処理 ブロック形式① If 論理式 Then 論理式が真の場合の処理 End If ブロック形式② If 論理式 Then 論理式が真の場合の処理 Else 論理式が偽の場合の処理 End If ブロック形式③ If 論理式1 Then 論理式1が真の場合の処理 ElseIf 論理式2 Then 論理式2が真の場合の処理 Else 論理式1と論理式2が偽の場合の処理 End If 論理式の条件に依りプログラムの実行を制御する。即ち、論理式が真(0以外)ならば Then 以下の処理が実行され、偽(0)ならばElse 以下の処理が実行される。但し、Else 節が無 い場合には、End If の次のコードが実行される。 通常、論理式(条件式)には比較式を指定するが、数値として評価出来る式で有ればどんな式でも指定 する事が出来る。論理式の値は、真(True)と偽(False)の孰れかとして評価され、数値の0は偽に 0以外の数値は真に評価される。 単一行形式は、短く簡単な条件判断を行う時に使用する。亦、ブロック形式は、単一行形式の構文に比 べ、より構造化された柔軟な記述が出来、コードの読み易さや保守性が向上し、デバッグも行い易く成 る。 ブロック形式かどうかを判断する場合、Then の後に何が続くかが調べらる。Then と同じ行の後ろの部 分にコメント以外の記述が有ると、単一行形式として扱われる。

Else 節と ElseIf 節はどちらも必要に応じて定義する。亦、ブロック形式では、ElseIf 節は幾つ指定し ても構わない。但し、Else 節の後ろには ElseIf 節を指定する事は出来ない。亦、1つの条件式の値に 依り、複数の処理の孰れかを実行させるには、Select Case ステートメントの方が適して居る。 機 能 書 式 解 説 論理式 真の場合の処理 偽の場合の処理 真(True) 偽(False)

(7)

Select文に依る条件分岐 評価式の値に従い、複数のステートメントブロックの中の孰れかを実行するステートメント Select Case 評価式 Case 該当式1 評価式が該当式1に該当する場合の処理 Case 該当式2 評価式が該当式2に該当する場合の処理 … Case Else 上記孰れの該当式にも該当しない場合の処理 End Select 評価式の値に従い、複数のステートメントブロックの中の孰れかを実行する。Select 文では 評価式が1回だけ評価され、其の値と各Case 節の値が比較され、一致した場合、其の Case 節に対応するステートメントブロックが実行される。 該当式には、1個以上の値リストを指定する。複数の値を指定する場合には、値をカンマ(,)で区切 る。亦、キーワードIs と To を使用する事も出来る。 評価式が複数の該当式と一致した場合には、最初に一致したCase 節のステートメントブロックが実行 される。亦、孰れの該当式とも一致しない場合は、Else Case 節(省略可能)が実行される。 For文に依るループ処理 指定した回数だけ一連の処理を行うステートメント For カウンター変数 = 初期値 To 終了値 Step 増分 一連の処理 Next カウンター変数

For…Next ステートメントは、For ステートメントから Next ステートメントの間に記述さ れた一連の処理を、指定した回数だけ繰り返し(ループ)実行する。 Step 節は省略する事が出来、此の場合、増分はプラス1と看做される。亦、増分は、負の値を指定する 事も出来る。 For…Next ステートメントのループは、下記の順序で実行される。 1.カウンター変数に初期値が設定される。 2.カウンター変数と終了値の値を比較し、カウンター変数の値が終了値より大きい場合は、ループ 内の処理は実行されずに、ループが終了する(増分が負の値の場合は、カウンター変数が終了値 より小さいかどうかが判断される)。 3.ループ内の処理を実行する。 4.カウンター変数に増分を加算する(Step 節を省略した場合は、1が加算される)。 5.ステップ2から4を繰り返す。 Exit For ステートメントを使用すると、ループから強制的に抜け出す事が出来る。 機 能 書 式 解 説 機 能 書 式 解 説

(8)

Year関数に依る年の取得 日付の中から年だけを取得して返す関数 Year(引数) 引数で与えられた日付から年の部分を取り出す。 引数には、日付を表す値、数式、文字列式等を指定し、省略する事は出来ない。 Month関数に依る月の取得 日付の中から月だけを取得して返す関数 Month(引数) 引数で与えられた日付から月の部分を取り出す(1~12の範囲内の整数)。 引数には、日付を表す値、数式、文字列式等を指定し、省略する事は出来ない。 Day関数に依る日の取得 日付の中から日だけを取得して返す関数 Day(引数) 引数で与えられた日付から日の部分を取り出す(1~31の範囲内の整数)。 引数には、日付を表す値、数式、文字列式等を指定し、省略する事は出来ない。 DateSerial関数に依る日付の取得 数値を日付に変換して返す関数 DateSerial(引数1, 引数2, 引数3) 引数で指定した年、月、日に対応する日付を得る。個々に入力された値から日付を作成する 時に使用する。 引数1には、年を表す値(0~99の範囲、又は4桁の整数値)を指定し、省略する事は出来ない。 引数2には、月を表す値(1~12の範囲の整数値)を指定し、省略する事は出来ない。 引数3には、日を表す値(1~31の範囲の整数値)を指定し、省略する事は出来ない。 機 能 書 式 解 説 機 能 書 式 解 説 機 能 書 式 解 説 機 能 書 式 解 説

(9)

DateAdd関数に依る時間の加算 指定された時間間隔を加算した日付を返す関数 DateAdd(引数1,引数2,引数3) DateAdd 関数を使用すると、或る日付に対して指定した時間間隔を、加えたり引いたりする 事が出来る。 引数1には、追加する時間間隔を表す文字列式を指定し、省略する事は出来ない。 引数2には、追加する時間間隔の数を表す数式を指定し、省略する事は出来ない。 引数3には、時間間隔を追加する日付を指定し、省略する事は出来ない。 引数1では、下記の設定値が使用出来る。 年(”yyyy”)、四半期(”q”)、月(”m”)、日(”d”) 週(”ww”)、時(”h”)、分(”n”)、秒(”s”) 引数2では、将来の日時を取得するには正の数を指定し、過去の日時を取得するには負の数を指定する。 DateAdd の戻り値の書式は、引数3に指定する日付の書式では無く、『コントロール パネル』の設定に 依り決まる。 DateDiff関数に依る時間の間隔 2つの指定した日付の時間間隔を返す関数 DateDiff(引数1,引数2,引数3,引数4,引数5) DateDiff 関数を使用すると、指定した時間単位で2つの日付の時間間隔を調べる事が出来る。 例えば、2つの日付の間の日数や、現在から年末迄の週の数等を求める事が出来る。 引数1には、時間間隔を計算する為の時間単位を表す文字列式を指定し、省略する事は出来ない。 引数2には、時間間隔を計算する基と成る日付1を指定し、省略する事は出来ない。 引数3には、時間間隔を計算する基と成る日付2を指定し、省略する事は出来ない。 引数4には、週の始まりの曜日を表す定数を指定し、省略する事が出来る。 引数5には、年度の第1週を表す定数を指定し、省略する事が出来る。 引数1では、DateAdd 関数の引数1と同じ設定値が使用出来る。 日付2よりも時間的に後の日付を日付1に指定すると、DateDiff 関数は負の数を返す。 Date関数に依る日付の取得 現在のシステムの日付を返す関数 Date 現在のシステム日付を取得する。引数は無い。 機 能 書 式 解 説 機 能 書 式 解 説 機 能 書 式 解 説

(10)

IsNumeric関数に依る数値評価 式が数値として評価出来るか何うかを調べ、結果をブール型で返す関数 IsNumeric(引数) 引数で指定した式が数値として評価出来れば真(True)を、出来なければ偽(False)を返 す。猶、引数が日付式の場合は偽を返す。 引数には、数式、又は、文字列式を含むバリアント型の式を指定し、省略する事は出来ない。 IsDate関数に依る日付評価 式が日付として評価出来るか何うかを調べ、結果をブール型で返す関数 Is Date(引数) 引数で指定した式が日付で有る場合、又は、其の式が有効な日付として認識出来る場合には 真(True)を返し、変換出来ない場合は偽(false)を返す。 引数には、日付や時刻として認識出来る日付式、又は、文字列式を指定し、省略する事は出来ない。 Microsoft Windows で有効な日付の範囲は、西暦100年1月1日から西暦9999年12月31日迄 で有る。此の範囲は、オペレーティングシステム(OS)に依り異なる 其他の日付と時刻を扱う関数 1.DateValue :文字列を日付に変換する関数 2.DatePart :日付の指定した部分を取得する関数 3.Weekday :指定した日付が何曜日かを取得する関数 4.TimeValue :文字列を時刻に変換する関数 5.TimeSerial :数値を時刻に変換する関数 6.Hour :時刻から時を取得する関数 7.Minute :時刻から分を取得する関数 8.Second :時刻から秒を取得する関数 算術演算子 比較演算子 論理演算子 1.^ 冪乗 1.= 等しい 1.Not 否定 2.- 負数 2.<> 等しくない 2.And 論理積 3.*、/ 乗算と除算 3.< より小さい 3.Or 論理和 4.¥ 整数除算 4.> より大きい 4.Xor 排他的論理和 5.Mod 剰余 5.<= 以下 5.Eqv 同値 6.+、- 加算と減算 6.>= 以上 6.Imp 包合 算術演算子と論理演算子では、複数の演算子が使用されて居る場合には、頭に付けた番号の順序で 演算が行われる(上に書かれて居る演算子程優先順位が高い)。 機 能 書 式 解 説 機 能 書 式

参照

関連したドキュメント

2.2.2.2.2 瓦礫類一時保管エリア 瓦礫類の線量評価は,次に示す条件で MCNP コードにより評価する。

瓦礫類の線量評価は,次に示す条件で MCNP コードにより評価する。 なお,保管エリアが満杯となった際には,実際の線源形状に近い形で

2.2.2.2.2 瓦礫類一時保管エリア 瓦礫類の線量評価は,次に示す条件で MCNP コードにより評価する。

関係会社の投融資の評価の際には、会社は業績が悪化

環境影響評価の項目及び調査等の手法を選定するに当たっては、条例第 47

「普通株式対価取得請求日における時価」は、各普通株式対価取得請求日の直前の 5

第2章 環境影響評価の実施手順等 第1

項目 評価条件 最確条件 評価設定の考え方 運転員等操作時間に与える影響 評価項目パラメータに与える影響. 原子炉初期温度