デバッグにご協力ください:実行時エラー「438」オブジェクトはこのプロパティまたはメソッドをサポートしていません
関数ConvertToStdDateFormat(InputRange As Range)が範囲 'ThisRange'を受け入れない理由がわかりません
これが私の入力がどのように見えるかです
201301 201401 201301 201401
201302 201402 201302 201402
201303 201403 201303 201403
201304 201404 201304 201404
201305 201405 201305 201405
以下はコードです
Sub trythis()
Dim ThisRange As Range
Dim MonthYear_array As Variant
start_date_row = 1
end_date_row = 12
With ActiveSheet
Set ThisRange = .Range(Cells(start_date_row, 1), Cells(end_date_row, 2))
MonthYear_array = .Range(Cells(start_date_row, 4), Cells(end_date_row, 5)).Value
End With
Call ConvertToStdDateFormat(ActiveSheet.Range(Cells(start_date_row,1), Cells(end_date_row, 2)))
Call ConvertToStdDateFormat(ActiveSheet.ThisRange)
End Sub
Public Function GetMonthYearFormatted(InputDate)
'InputDate should be in the format "201401" i.e. year(2014)month(01)
IPString = CStr(InputDate)
monthval = CInt(Right(IPString, 2))
yearval = CInt(Left(IPString, 4))
opDate = DateSerial(yearval, monthval, 1)
OPFormatDate = Month(opDate) & "-" & Year(opDate)
GetMonthYearFormatted = OPFormatDate
End Function
Function ConvertToStdDateFormat(InputRange As Range)
Dim temp_array As Variant
temp_array = InputRange
For colsC = 1 To UBound(temp_array, 2)
For rowsC = 1 To UBound(temp_array, 1)
temp_array(rowsC, colsC) = GetMonthYearFormatted(temp_array(rowsC, colsC))
Next rowsC
Next colsC
InputRange.Resize(UBound(temp_array, 1), UBound(temp_array, 2)) = temp_array
ConvertToStdDateFormat = Null
End Function
ラインを交換するだけです
Call ConvertToStdDateFormat(ActiveSheet.ThisRange)
沿って
Call ConvertToStdDateFormat(ThisRange)
コードは機能します(範囲が配置されているワークシートは範囲オブジェクト自体に格納され、ThisRange.Worksheet
で参照できます)。
デバッグを容易にするために、すべてのモジュールをOption Explicit
の行で開始すると便利な場合があります。これにより、使用されるすべての変数(つまり、Dim x as Integer
行)のexplicit宣言が強制されます。