[[20060311170850]] 『ユーザーフォームにて』(&) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ユーザーフォームにて』(&)

 いつもお世話になって下ります。
 毎々、この掲示板にて質問させていただき、私の作成しているユーザーフォーム
も完成に近づいてきました。

 そこで、またまた疑問にぶつかってしまったのですが・・・

 ユーザーフォームにてある日付までの期間の算出などできますでしょうか?

 具体的に書きますと・・・

 textbox1 に 今日の日付 
 textbox2 に 完成予定日  
 が入力されると、textbox3 に今日から完成までの期間が表示されるように
したいなと考えているのですが、関数などを使って計算できるものでしょうか? 

 よろしくお願いします。


 テキストボックスの中の日付は文字列なので
 シリアル値に変換する「DateValue()」を使ってその差を求めると日数がでます。
 詳細はVBAのヘルプを見てください。

 日数=DateValue(完成予定日)-DateValue(今日の日付)
 (やっちん)

 (やっちん)さんありがとうございます。
 DateValueを利用して実行すると
 実行時エラーで「型が一致しません」となってしまうのです・・・

 今日の日付 完成予定日 共に入力後format関数を利用して
 testbox1.value=format(textbox1,"yy/mm/dd(aaa)")
 と表示させています。
 これが原因なのでしょうか?

 ヘルプを見る事が出来なくてきちんと調べられていないのですが・・・
 すみません

 (&)


 すみません!
 今、formatを外して実行するとうまくいきました・・・
 やはり書式を変えてしまうとだめなんですね・・・

 表示形式だけをかえて計算する事はできるものなんでしょうか?

 (&)

表示形式をかえる例

Dim 日1 As String

Dim 年 As String

Dim 月 As String

Dim 月1 As String

Dim 月2 As String

Dim 仮定1 As String

Dim 西暦 As String

If ComboBox1 = "" And ComboBox2 = "" And ComboBox3 = "" Then

   MsgBox ("下さい。")
   Exit Sub
End If

日 = Format(TextBox1, "dd")

年 = Format(TextBox1, "ee")

西暦 = Left(TextBox1, 4)

月 = TextBox1

月1 = Left(月, 7)

月1 = Right(月1, 2)

月日 = Right(TextBox1, 5)

If Left(月1, 1) = "0" Then

   月1 = Right(月1, 1)
   月2 = " " + 月1
Else
   月2 = 月1
End If
日 = Right(月, 2)
If Left(日, 1) = "0" Then
   日 = Right(日, 1)
   日1 = 日
   日 = " " + 日
Else
   日1 = 日
End If
(4ku8ku)

 テキストボックスの中の日付のすぐ後ろが括弧付きなのであれば
 括弧の前の日付だけを取り出せばできると思いますよ。
 日数=DateValue(Left(完成予定日, InStr(完成予定日, "(") - 1)) - _
      DateValue(Left(今日の日付, InStr(今日の日付, "(") - 1))
 (やっちん)

 例えばの話・・・
 Private Sub TextBox2_AfterUpdate()
    If TextBox1.Text = "" And TextBox2.Text = "" Then Exit Sub
    TextBox3.Text = DateDiff("d", TextBox1.Text, TextBox2.Text)
 end sub

 なんかは有効かと・・・
 アカンかいなぁ。


 みなさまたくさんアドバイスをいただいていたのに返信が遅くなり
すみませんでした!
 いつも丁寧にありがとうございます。

 無事にやっちんさんのleftで解決しました!!
最後にDateDiff の例もいただいていたので実行してみたのですが、
同じく実行時エラーで「型が一致しません」となってしまいました・・・

 (&)

 エラーがでるんはTextBox2を消去してEnterキーを押したばやいでっか?
 ほんならこれでやってみておくんなはれ。
 TextBox1と2には 4/5 とか5月4日といった塩梅(2006/4/5でもOK)に
 書き込んでくらはい。5.6 とか4.8いうのはあきまへん。
     (弥太郎)

 Private Sub TextBox2_AfterUpdate()
    On Error Resume Next
    TextBox3.Text = DateDiff("d", TextBox1.Text, TextBox2.Text) & "  日"
    If TextBox2.Text = "" Or TextBox1.Text = "" Then
        TextBox3.Text = ""
    End If
    On Error GoTo 0

 End Sub


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.