万年暦プログラム

Similar documents
回文作成支援プログラム

回文作成支援プログラム

相性占いプログラム

回文作成支援プログラム

ルーレットプログラム

万年暦プログラム

通信対戦プログラム

相性占いプログラム

3D回転体プログラム

PowerPoint プレゼンテーション

sinfI2005_VBA.doc

回文作成支援プログラム

わにわにパニックプログラム

データベース1

回文作成支援プログラム

正規表現応用

ExcelVBA

通信対戦プログラム

VB.NET解説

MS-ExcelVBA 基礎 (Visual Basic for Application)

3D回転体プログラム

ブロック パニック

Microsoft Word - VBA基礎(3).docx

データベース1

画像閲覧プログラム

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

回文作成支援プログラム

モグラ叩きプログラム

ブロック崩し風テニス

VB実用⑦ エクセル操作Ⅰ

Userコントロール

Microsoft Word _VBAProg1.docx

Section1_入力用テンプレートの作成

万年暦プログラム

インベーダープログラム

JavaScriptプログラミング入門 2.JavaScriptの概要

ファイル操作

構造体

テキストファイルの入出力1

プレポスト【問題】

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

万年暦プログラム

ファイル操作-インターネットキャッシュ

データベース1

グラフィックス

占領双六ゲーム

神経衰弱ゲーム

PowerPoint プレゼンテーション

ICONファイルフォーマット

Java講座

草競馬プログラム

VB実用Ⅲ⑩ フリーデータベースⅡ

1. 入力画面

Microsoft PowerPoint - Visualプログラミング

関数とは 関数とは 結果を得るために 処理を行う仕組み です Excel2010 には あらかじめ関数が数式として組み込まれています たとえば SUM 関数 は 指定した値をすべて合計する 仕組みです 長い計算式や複雑な計算式を作成せずに 簡単に結果を求めることができます 例合計 =A1+A2+A3

計算機プログラミング

プロセス間通信

チャットプログラム

プログラミング基礎

PowerPoint プレゼンテーション

Prog2_12th

本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(VBA) サンプル問題 知識科目 第 1 問 ( 知

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

Taro-Basicの基礎・条件分岐(公

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

画像閲覧プログラム

Sheet2 に作成する表 問題 2 前問の成績表 (Sheet2) の各教科の順位の列の次に評価の列を作って 生徒ごとに各教科の評価をし なさい なお評価は 各教科 A(100~85) B(84~70) C(69~55) D(54 以下 ) とする 1.4 集中力度チェックテスト自分の集中力がどの

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

プレポスト【解説】

データアダプタ概要

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

Microsoft Word - VBA基礎(6).docx

Microsoft Word - 18環設演付録0508.doc

CONTENTS マニュアルの表記... S01-02_01 1.DataNature Smart 全体概要図... S01-02_11 2. 基本操作... S01-02_ ジョブの作成... S01-02_21 加工条件設定... S01-02_21 Step1: 処理対象データの指

レポートでのデータのフィルタ

PowerPoint プレゼンテーション

Microsoft PowerPoint - VBA解説1.ppt [互換モード]

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 文字列 文字列リテラル プログラムの中で文字列を表す方法は幾つか有るが 基本的な方法は下記の 2 種で有る 対象と成る文字の集まりをダブルクオーテーション ( " ) で囲うか シングルクオーテーション ( ' ) で囲う PYTHON3 "

VB実用⑩ エクセル操作Ⅳ

プログラミング実習I

ii Excel Excel IF IF IF VLOOKUP HLOOKUP IF VLOOKUP HLOOKUP ExcelVBA Excel Excel Excel Web p Excel Excel Excel

ListViewコントロール

Prog2_15th

クエリの作成が楽になるUDF

Microsoft PowerPoint - ruby_instruction.ppt

NotifyIconコントロール

Microsoft Word - no103.docx

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太

プログラミング入門1

演習1

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

何時何処で誰が

Microsoft Word - VB.doc

untitled


正規表現概要

方程式の解法

BASICとVisual Basic

Transcription:

暦カルキュレータ VB8 プログラムの概要 テキストボックスで指定した年月日より オプションボタンで日付が選択されて居る場合は 何年 又は 何箇月 又は 何日 又は 何週後 又は 前の日付を求める 亦 オプションボタンで日数が選択されて居る場合は 更にテキストボックスで指定した年月日迄の日数を求める オプションボタンの選択状況に依り 入力欄の有効 無効を切り替えると共に コマンドボタンのキャプションを書き換えて 操作性を高める様にして居る 今回の課題項目 単純変数の宣言 (Dim) 標準コントロールの利用 (Frame Label Text Combo Command Option) プロパティの値の取得と設定 (Value ListIndex 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 ) For 文に依るループ処理 (For counter=start To end : : Next counter) Select Case 文に依るループ処理 (Select Case: Case : End Select) 評価関数 (IsNumeric Isate) 日付と時間を扱う関数 (Year Month Day DateSerial DateAdd DateDiff) 今回の応用項目 日付計算だけで無く 時間計算も出来る様に拡張する テキストボックスへの入力に於けるマンマシンインターフェイスを改良する -1-

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

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

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

' コマンドボタン ( 終了 ) がクリックされた時の処理 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 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) Else txtdate(3).setfocus: Exit Sub If cmbdate.listindex < 0 Then cmbdate.setfocus: Exit Sub Else S = Opt(cmbDate.ListIndex) lbldatedisp. = 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 T2 = DateSerial(Y, M, D) lbldatedisp. = Format(DateDiff("d", T1, T2), "##### 日 ") End Sub -5- 此処で宣言した変数は宣言したサブプロシージャ内でしか値の参照と設定を行う事が出来ない 此の様に カンマで区切り複数の変数を 1 行で宣言する事も出来る IsDate 関数は 引数で与えられた文字列が日付と仕て評価出来るかを調べる 猶 夫々れのテキストボックスの入力値が数値と仕て評価出来るか IsNumeric 関数で調べて置く事が望ましい を指定した形式に変換するには Format 関数を使用すると便利である

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

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 ステートメントを使用すると ループから強制的に抜け出す事が出来る -7-

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 の範囲の整数値 ) を指定し 省略する事は出来ない -8-

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 現在のシステム日付を取得する 引数は無い -9-

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 包合 算術演算子と論理演算子では 複数の演算子が使用されて居る場合には 頭に付けた番号の順序で演算が行われる ( 上に書かれて居る演算子程優先順位が高い ) -10-