Excel 使用AutoFill提示“类Range的AutoFill方法无效”
今天遇到一个神奇的问题,之前一直使用很好的代码突然报错:“类Range的AutoFill方法无效”,在网上搜索了一番,感觉没有一个与我遇到的情况相同的。debug,查看一下代码,发现程序里,AutoFill前后指定的是相同的区域。不知道是不是因为这个原因,只能自己手动测试到底什么情况才会产生这个提示了。
写了一段测试代码:
Worksheet sheet = Helper.GetActiveSheet(); Range b = sheet.Cells[1, 1]; Range end = sheet.Cells[3, 1]; Range a = sheet.Range[b, end]; b.Value2 = 1; b.AutoFill(a, XlAutoFillType.xlFillSeries);
上面的代码可以执行成功。
修改上面的测试代码,看看什么情况会报出类似的错误。将最后一行修改为:
a.AutoFill(a, XlAutoFillType.xlFillSeries);
这回代码报错了,和我遇到的情况类似,会不会是因为这个a区域包含的范围太大了呢?那再试一下,将代码修改为:
b.AutoFill(b, XlAutoFillType.xlFillSeries);
依然报错。OK,可以确认了。Range1.AutoFill(Range2,*),Range2要包含Range1,两个区域不能完全相同。
附:AutoFill说明
摘自:http://www.feiesoft.com/vba/excel/xlmthautofill.htm
对指定区域中的单元格进行自动填充。Variant 类型。
expression.AutoFill(Destination, Type)
expression 必需。该表达式返回“应用于”列表中的对象之一。
Destination Range对象类型,必需。要填充的单元格。目标区域必须包括源区域。
Type XlAutoFillType 类型,必需。指定填充类型。
XlAutoFillType 可为以下 XlAutoFillType 常量之一。 |
xlFillDays |
xlFillFormats |
xlFillSeries |
xlFillWeekdays |
xlGrowthTrend |
xlFillCopy |
xlFillDefault default |
xlFillMonths |
xlFillValues |
xlFillYears |
xlLinearTrend |
如果省略本参数或将本参数指定为 xlFillDefault,则 Microsoft Excel 将依据源区域选择最适当的填充方式。 |