今天遇到一個神奇的問題,之前一直使用很好的代碼突然報錯:“類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 將依據源區域選擇最適當的填充方式。 |