重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

皆様、こんにちは。VB初心者のMALと申します。
当方VB5.0を使用しています。

以下のような事にチャレンジしておりますが、壁に当たっております。

フォーム上にはコンボボックスが3つ。
ラベルが3つ。
コマンドボタンが1つ。

年、月、日をそれぞれコンボボックスから入力。
コマンドボタンを押すと、その日より13日後、29日後、89日後の値を、それぞれラベルに表示。

とても初歩なのだろうとは思いますが、何卒宜しくお願い致します。

A 回答 (4件)

#2です。

お礼の部分に答えて、
Private Sub cmdstart_Click()
Dim addYear As Integer
Dim addMonth As Integer
Dim addDay As Integer
Dim addDate As Date
addYear = 2003
addMonth = 2
addDay = 25
' CmbYear.Text = Val(addYear)
' CmbMonth.Text = Val(addMonth)
' CmbDay.Text = Val(addDay)
addDate = DateSerial(addYear, addMonth, addDay)
Label1.Caption = Str(addDate + 13)
' lblafter30.Caption = Str(addDate + 29)
' lblafter90.Caption = Str(addDate + 89)
End Sub
で動きました。
addYearなどをIntegerで定義して、Valするのはおかしい。
ValしたものをTextにセットするのもおかしい。
上記で13日後はlabel1.Captionに03/03/10が表示しました。だから足し算で13日後が求められるのは正しいでしょう。
    • good
    • 0
この回答へのお礼

>ValしたものをTextにセットするのもおかしい。
ここで、右辺と左辺を勘違いしてしまっていたようでした^^;

一日置いて、見直すと気がついたりするものですね。
有り難う御座いました。

お礼日時:2003/02/26 23:12

Private Sub cmdstart_Click()


Dim addYear As Integer
Dim addMonth As Integer
Dim addDay As Integer
Dim addDate As Date
CmbYear.Text = Val(addYear)
CmbMonth.Text = Val(addMonth)
CmbDay.Text = Val(addDay)
addDate = DateSerial(addYear, addMonth, addDay)
lblafter14.Caption = Str(addDate + 13)
lblafter30.Caption = Str(addDate + 29)
lblafter90.Caption = Str(addDate + 89)
End Sub


どこで値が代入されているのですか?
ヒントだけ出しますので、後はご自分で考えましょう。

Private Sub cmdstart_Click()
Dim addYear As Integer
Dim addMonth As Integer
Dim addDay As Integer
Dim addDate As Date

Call MsgBox("addYear, addMonth, addDay → " & CStr(addYear) & ", " & CStr(addMonth) & ", " & CStr(addDay))
Debug.Print "addYear, addMonth, addDay → " & CStr(addYear) & ", " & CStr(addMonth) & ", " & CStr(addDay)

CmbYear.Text = Val(addYear)
CmbMonth.Text = Val(addMonth)
CmbDay.Text = Val(addDay)

Call MsgBox("addYear, addMonth, addDay → " & CStr(addYear) & ", " & CStr(addMonth) & ", " & CStr(addDay))
Debug.Print "addYear, addMonth, addDay → " & CStr(addYear) & ", " & CStr(addMonth) & ", " & CStr(addDay)

addDate = DateSerial(addYear, addMonth, addDay)

Call MsgBox("addYear, addMonth, addDay → " & CStr(addYear) & ", " & CStr(addMonth) & ", " & CStr(addDay))
Debug.Print "addYear, addMonth, addDay → " & CStr(addYear) & ", " & CStr(addMonth) & ", " & CStr(addDay)

Call MsgBox("DateSerial(addYear, addMonth, addDay) → " & CStr(DateSerial(addYear, addMonth, addDay)))
Debug.Print "DateSerial(addYear, addMonth, addDay) → " & CStr(DateSerial(addYear, addMonth, addDay))

Call MsgBox("addDate = " & CStr(addDate))
Debug.Print "addDate = " & CStr(addDate)

lblafter14.Caption = Str(addDate + 13)
lblafter30.Caption = Str(addDate + 29)
lblafter90.Caption = Str(addDate + 89)

Call MsgBox("addYear, addMonth, addDay → " & CStr(addYear) & ", " & CStr(addMonth) & ", " & CStr(addDay))
Debug.Print "addYear, addMonth, addDay → " & CStr(addYear) & ", " & CStr(addMonth) & ", " & CStr(addDay)

Call MsgBox("DateSerial(addYear, addMonth, addDay) → " & CStr(DateSerial(addYear, addMonth, addDay)))
Debug.Print "DateSerial(addYear, addMonth, addDay) → " & CStr(DateSerial(addYear, addMonth, addDay))

Call MsgBox("addDate = " & CStr(addDate))
Debug.Print "addDate = " & CStr(addDate)

End Sub
    • good
    • 0
この回答へのお礼

>どこで値が代入されているのですか?
このセリフで、右辺と左辺の間違いにやっと気がつきました。
一生懸命、関数の使い方についてヘルプや参考書を見ていました。
一日、日を置いて見直すと案外気がつくものですね^^;
有り難う御座いました。

お礼日時:2003/02/26 23:08

Sub test01()


d = DateSerial(2003, 2, 25)
MsgBox d
d = d + 10
MsgBox d
End Sub
を標準モジュールで実行して見てください。
感じを掴んだ後に
コンボボックス3つで上記2003、2、25をストリングで得てください。yy、mm、ddとします。
Dateserial関数Dateserial(yy,mm,dd)で日付けシリアル値になります。あとx日後(前)を求めるのは単に足し算 d+x で求められます。
Sub test01()
d = DateSerial("2003", "2", "25")
MsgBox d
d = d + 10
MsgBox d
End Sub
でも上手く行きますから、ストリングで大丈夫です。
    • good
    • 0
この回答へのお礼

丁寧な回答有り難う御座います。
下記のように記述してみたのですが、うまくいきません。
どこがおかしいのか自分にはわからないので、今一度ご指導願えたらと思います。
コマンドボタンのイベントプロシージャだけを載せます。

cmdstart:コマンドボタン
CmbYear:コンボボックス1
CmbMonth:コンボボックス2
CmbDay:コンボボックス3
lblafter14:ラベル1
lblafter30:ラベル2
lblafter90:ラベル3

Private Sub cmdstart_Click()
Dim addYear As Integer
Dim addMonth As Integer
Dim addDay As Integer
Dim addDate As Date
CmbYear.Text = Val(addYear)
CmbMonth.Text = Val(addMonth)
CmbDay.Text = Val(addDay)
addDate = DateSerial(addYear, addMonth, addDay)
lblafter14.Caption = Str(addDate + 13)
lblafter30.Caption = Str(addDate + 29)
lblafter90.Caption = Str(addDate + 89)
End Sub

お礼日時:2003/02/26 01:12

DateAdd関数、DateSerial関数をヘルプで調べてください。



ついでに余裕があれば、下記の関数も調べておくと便利です。

DateDiff
IsDate
DatePart
CDate
Year
Month
Day
Hour
Minute
Second
Date
Now
Timeserial
WeekDay
Format
    • good
    • 0
この回答へのお礼

ヒントをくださり有り難う御座います。
ヘルプや参考書などを参考にしてみましたが、>2のような状況です。
恐らく基本的な事が間違っているのではないかと思うのですが、自分ではどこが違うのかわかりかねている次第です。
計算結果までうまくいきましたら、Format関数などで和暦などを使って綺麗な表示をしていきたいと思います。

お礼日時:2003/02/26 01:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!