估计是你工作簿没有17个工作表,所以下标越界。改一句:For m = 2 To 16 改为:For m = 2 To sheets.count另外代码写得不好,还应该简化。
For m = 2 To 16n = Sheets(m).[a65536].End(xlUp).Rowo = Sheets(1).[a65536].End(xlUp).RowSheets(m).Selectsheet越界了,你的工作簿只有3个sheet1