web-dev-qa-db-ja.com

Excelでvbaを使用して日付にx日数を追加します

ポップアップボックスを使用して、長い日付にx日を追加しようとしています。

Public Function AskForDeadlinePlus4() As String
    Dim strUserResponse As String

    strUserResponse = InputBox("Enter Validuntil Date: Add # of Days To Survey end date")
    strUserResponse = FormatDateTime(strUserResponse + I2, vbLongDate)
    ActiveSheet.Cells(2, 10).Value = strUserResponse 'the 2, 10 is the cell reference for J2 - row 2, column 10.

End Function

セルI2の調査終了日。

これを実行すると、(これを行う方法をグーグルで検索すると疲れます)

4 + I2 (どこ I2 = Friday, April 05, 2013>>Wednesday, January 03, 1900

もちろん必要ですTuesday, April 09, 2013

ありがとう

6
xyz

DateAdd関数を使用しましたか?

Sub DateExample()

Dim strUserResponse As String '## capture the user input'
Dim myDate As Date     '## the date you want to add to'
Dim numDays As Double  '## The number of days you want to add'


strUserResponse = InputBox("Enter Validuntil Date: Add # of Days To Survey end date")
numDays = InputBox("How many days to add?")
myDate = CDate(strUserResponse)

MsgBox DateAdd("d", numDays, myDate)


End Sub
16
David Zemens

このコードは、DateAdd(<base e.g. Day = "D">, <number>, <date>)関数を使用した後のものだと思います。

Public Function AskForDeadlinePlus4() As String
    Dim strUserResponse As Date, iNumber As Long, rResponse As Variant

    AskForDeadlinePlus4 = "" 'set default value
    iNumber = CLng([I2])
    rResponse = InputBox("Enter Validuntil Date: Add " & iNumber & " Day(s) To Survey end date")

    If rResponse = False Then
        'no value entered
        Exit Function            
    ElseIf Not IsDate(rResponse) Then
        'no date entered
        Exit Function
    Else
        'valid date entered
        strUserResponse = DateAdd("D", iNumber, CDate(rResponse))
    End If

    AskForDeadlinePlus4 = FormatDateTime(strUserResponse, vbLongDate)    
End Function

ただし、いくつかのポイント:

  • 入力関数は、入力が入力されていない場合、ブール値[〜#〜] false [〜#〜]を返します。
  • 上で使用したテストは関数であり、使用すると値が返されます
  • 別のVBAコードで使用する場合は、i = AskForDeadlinePlus4はその使用法です。
  • ただし、セルで使用することもできますが、すべての計算で必要な場合にのみ、入力を求め、すべてのセルでその入力を求めます。=AskForDeadlinePlus4;そして
  • さらに、ユーザーが有効な日付を入力できない可能性があるため、日付が入力されたかどうかを確認するチェックを追加しました。

VBAで使用する場合:

Sub GetInfo()
    'the 2, 10 is the cell reference for J2 - row 2, column 10.
    ActiveSheet.Cells(2, 10).Value = AskForDeadlinePlus4
End Sub
2
glh

より多くの入力が必要なDateAddを使用する代わりに、DateValueを使用することもできます。以下はそれをします。

DateValue(strUserResponse )+I2

別の解決策は、変換関数CDateを使用することです。

CDate(strUserResponse )+I2
0
ExcelinEfendisi