Excel VBA:运行时错误'438'对象不支持此属性或方法

请帮助debugging:运行时错误“438”对象不支持此属性或方法

我不知道为什么我的Function ConvertToStdDateFormat(InputRange As Range)不接受范围'ThisRange'

这是我的input看起来像

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" ie 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引用)。

为了使debugging更容易,使用Option Explicit行来启动所有的模块可能是有用的。 这强制显式声明所有使用的variables(即Dim x as Integer行)。