のぞきさん、こんにちは。
私は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