Excelfunction打破了

我怎么能得到以下function工作?

Public Function DataRange(Somesheet as String, Optional StartCell as String) as Excel.Range If StartCell = "" Then DataRange =ThisWorkbook.Sheets( Somesheet).Range( ThisWorkbook.Sheets( Somesheet)_ .Cells(1,1).End(xldown),ThisWorkbook.Sheets(Somesheet).Cells(1,1).End(xlright)) Else DataRange = ThisWorkbook.Sheets(Somesheet).Range(ThisWorkbook.Sheets(Somesheet)_ .Range(Startcell).End(xldown),ThisWorkbook.Sheets(Somesheet).Range(Startcell).End(xlright)) End If End Function 

 Public Function DataRange(Somesheet as String, _ Optional StartCell as String = "A1") as Excel.Range With ThisWorkbook.Sheets(Somesheet) Set DataRange = .Range(.Range(Startcell).End(xldown), _ .Range(Startcell).End(xltoright)) End With End Function 

注意: xlToRight不是xlRight

用法:

 Dim rng Set rng = DataRange("Sheet1") 'uses default A1 as top-left cell Set rng = DataRange("Sheet1", "E10") 'uses E10 

这也可能工作:

 ThisWorkbook.Sheets(Somesheet).Range(Startcell).CurrentRegion 

我假设你的If StartCell = ""不起作用。 更改Startcellvariables是一个变体,这将允许您使用ismissing函数来检查是否已通过,并分配您自己的默认值,如果它没有。 IsMissing只适用于不同的数据types。 如果需要,在将parameter passing给函数时使用Cvar()