掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DateTimePickerの使い方を教えてください (ID:110165)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 作っている内容というのが、 (中略) > という感じで依頼をうけたのですが・・・。 あぁ……それで何となくイメージがわきました。 多分、産前産後の休業制度に関する計算式でしょうね。 >> 問1) String変数 [出産日] には、どのような文字列が渡される事を期待 >> していますか? > 型をStringにしたらエラーが消えたから、 でもプログラミングというのは、エラーが消えれば良い……というものでは無いですよね? (^^; エラーにならなくなったとしたら、その後で、それぞれの変数に 「どのような値が渡されるか」を調べるようにしてみてください。 (VBのステップ実行機能や、ウォッチウィンドウなどが役に立つでしょう) プログラムの間違い(いわゆる「バグ」)で一番多いのが、ロジック上のエラー すなわち、「エラーは出ないけれど、期待動作しない」という物ですから、 それぞれの各行の意味を、きちんと把握しておかないと、望むべき結果は得られないかと。 また、「どういう結果になるのが正しいのか」を把握しておく事も重要ですね。 例えば……予定日に何年何月何日を指定したら、ラベルにこういう結果が 表示されるのが正しいのだ……という例を、ある程度ご自身で把握しておかないと、 折角作成したコードが、正しいかどうかの検証すらできませんから。 > Dateにすると計算ができないみたいだったから Date型で計算できますよ。(というよりも、Date型を使った方が計算が楽かと思います) # 最初の回答でも、『DateTimeのAdd系メソッドや減算演算子を使えば』と答えましたよね。(^^; 例えば、こんな感じで計算できますよ。 Dim 出産日 As Date 'これらの As Date の部分は、 Dim 出産日産後 As Date ' As DateTime と書いても同じ意味です。 出産日 = Me.DTPicker2.Value '選択された日付を取得 出産産前 = 出産日.AddDays(-42.0) '42日前の日付を取得 Fr日数結果.Lb出産日産前.Text = 出産産前.ToString("yyyy\/MM\/dd") '書式を整えて表示 元のコードのように、Date型の値を、そのままString型で受ける、というのは、 あまり良いコードとは言えません。日付型から文字列型への暗黙の変換は、 実行環境(コントロールパネルの設定)によって変換結果が異なることがあるため、 VB.NETはもちろんの事、VB6やVBAであっても、推奨されていないコーディングです。 異なるデータ型へ変換する時は、型変換処理を適切に行うように心がけた方が良いですよ。 実行環境によっては、期待する結果とは異なる変換が行われてしまう事がありえますから。。。 できれば、暗黙の型変換を防ぐため、モジュールの一番先頭の行に、 Option Explicit On Option Strict On の2行を入れておく事を強くお奨めします。 (あるいは、Visual Studio.NETの設定で、Option Strict Onを強制させる事もできます) Option Strictを有効にしておくと、暗黙の型変換に頼ったコードが使われていた時に コンパイルが通らないようになりますので、プログラムの問題を見つけやすくなります。 > VBAとVBって、関数ひとつでもぜんぜん違うんですね。 VB.NETとVB/VBAは、かなり違っていますね。(一時期は、VB.not と皮肉られていた程です) でもVBAとVBに関していえば、関数などを見ても、一緒の部分がとても多いと思いますよ。 大きな違いと言っても、画面(Form)の扱いが違う程度だと思います。 VB(VBA)用の共通の基本関数が幾つかあって、それに、VB固有のオブジェクトが追加されているか、 あるいは、VBA固有の命令…すなわち、各製品(Excel, Outlook など)に固有のオブジェクト…が 追加されているか、という程度のものでしょう。 なお、細かい突っ込みですが… > 'Form結果をモーダルで表示 > Fr日数結果.Show() これはモーダルではなく、モードレスです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.