0

のぞきさん、こんにちは。

私はVBに非常に慣れていないので、非常に単純なものを作成しようとしてWebのコードを少し取っています。日付値を持つ2つのセル間の週数を計算するためにExcelを取得しようとしています。最初のセルは固定された場所にあり、2 番目のセルはその列の使用範囲内の最後のセルです。

Lastは、ウェブからつまんだ機能です。これをまったく機能させることができません。どんな助けでも大歓迎です。

   Sub test_date_calc()



   Dim LastCell As String
   Dim nwks As Integer
   Dim rng As Range

   Set rng = Sheets("data13").UsedRange
   LastCell = Last(3, rng)
   nwks = (Cells(3, 2) - LastCell.Value) / 7
   If nwks > 13 Then

   MsgBox "greater"
   Else

   MsgBox "Less"

   End If
   End Sub

以下のLast機能が役立ちます

Function Last(choice As Long, rng As Range)
'Ron de Bruin, 5 May 2008
' 1 = last row
' 2 = last column
' 3 = last cell
    Dim lrw As Long
    Dim lcol As Long

    Select Case choice

    Case 1:
        On Error Resume Next
        Last = rng.Find(What:="*", _
                        After:=rng.Cells(1), _
                        Lookat:=xlPart, _
                        LookIn:=xlFormulas, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlPrevious, _
                        MatchCase:=False).Row
        On Error GoTo 0

    Case 2:
        On Error Resume Next
        Last = rng.Find(What:="*", _
                        After:=rng.Cells(1), _
                        Lookat:=xlPart, _
                        LookIn:=xlFormulas, _
                        SearchOrder:=xlByColumns, _
                        SearchDirection:=xlPrevious, _
                        MatchCase:=False).Column
        On Error GoTo 0

    Case 3:
        On Error Resume Next
        lrw = rng.Find(What:="*", _
                       After:=rng.Cells(1), _
                       Lookat:=xlPart, _
                       LookIn:=xlFormulas, _
                       SearchOrder:=xlByRows, _
                       SearchDirection:=xlPrevious, _
                       MatchCase:=False).Row
        On Error GoTo 0

        On Error Resume Next
        lcol = rng.Find(What:="*", _
                        After:=rng.Cells(1), _
                        Lookat:=xlPart, _
                        LookIn:=xlFormulas, _
                        SearchOrder:=xlByColumns, _
                        SearchDirection:=xlPrevious, _
                        MatchCase:=False).Column
        On Error GoTo 0

        On Error Resume Next
        Last = rng.Parent.Cells(lrw, lcol).Address(False, False)
        If Err.Number > 0 Then
            Last = rng.Cells(1).Address(False, False)
            Err.Clear
        End If
        On Error GoTo 0

    End Select
End Function
4

1 に答える 1

4

あなたのエラーは次の行によるものだと思います:

 nwks = (Cells(3, 2) - LastCell.Value) / 7

LastCell は文字列なので、.Value

 nwks = (Cells(3, 2) - LastCell) / 7

DATEDIFF関数は VBA で使用できます。

  DateDiff( interval, date1, date2, [firstdayofweek], [firstweekofyear] )

使用例:

nwks = DateDiff("ww", Cells(3, 2).Value, LastCell.Value)

ここのドキュメントを見ることができますDATEDIFF

于 2013-11-01T13:53:06.310 に答える