Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
tetデータの読み込み・メッセージ表示
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=2428#CommentId19399
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
るしぇ
 ()
投稿日時
2008/7/5 02:22:00
>>14
更なるステップアップのために
>Dim genzai As Date
>Dim strTime As Date
>Dim toyoubi As String
カプセル化の意味から、Private 宣言で問題無い変数に関しては Dim 宣言を
避け Private 宣言することを推奨します。
>Dim strTime As Date
変数の命名規則としてPREFIX(接頭子)を使う場合、str は String 型を意味
します。Date 型に変更したのであれば接頭子も dat とかに変更します。
他の変数名と命名規則が違いますが、可読性を高めるために「コーディング規約」
について調べることをお勧めします。
データ型を意識したプログラミングをするために、ファイルの先頭に
Option Strict On
と書いてみてください。
>genzai = TimeValue(Now)
の Now にエラー
「Option Strict On で 'Date' から 'String' への暗黙的な変換はできません。」
が出ましたか?関数 TimeValue の引数は文字列です。つまり、ここでは
Now(Date型)⇒文字列(String型)への暗黙の変換処理が行われます。
そして関数 TimeValue で再び Date 型へ。Date 型は数値と同じような
内部構造をしてますから、数値⇔文字列を行うのと同じくらいのコストが
掛かります。PCの性能が格段に良くなっている現在では、1度や2度の変換コスト
を重く感じることは無いでしょう。ただし上級者になって数千万件のデータを
扱った場合、このような無駄な処理は避けるべきです。
TimeValue 関数は日付情報が 1 年 1 月 1 日に設定された日付型を返すので
時刻だけ抜き出す処理としては面白い発想です。
ただし、効率よいプログラムを作成したいなら、せっかく日付型になっている
ものを他の型に変換するのは避けます。
考え方として時と分が合えばいいのであれば、
genzai = Now
strTime = TimeValue("4:00:00")
If genzai.Hour = strTime.Hour AndAlso genzai.Minute = strTime.Minute Then
'時・分が一致の処理
End If
と書けます。秒まで一致なら更に Second の条件を追加します。
ここまではプログラミングの基礎的な部分に関しての改善点です。
基礎的な知識を身につければ解決案も出せるでしょう。