很显然你的range并未处于选定区域就使用了activate方法。其实你这个代码有很多“废话”,复制和选择性粘贴时,选中或激活单元格区域都是没必要的。事实上select这个方法在录制宏时才会在自动代码里出现,一般编写代码时基本不用。 我修改如下,请仔细体会。Set pxl_copy = wb_report.Worksheets("公式") ...
Private Sub Worksheet_Change(ByVal Target As Range)With Sheets("数据")If Target.Address = "$E$6" And [G2] <> "" And [H2] <> "" Then Range("e6") = WorksheetFunction.Average(Range("g2"), Range("h2"))End If End With End Sub 双击E6就执行 ...
请仔细看你的图,下面部分显示c为空值,这样Sheets(2).Range("C" & c)就会出问题,c必须要是一个从1开始的整数才不报错,c为空值的时候,系统就去访问Sheets(2).Range("C"),这明细缺少一个行,所以报错,明白了吗?另外,图和代码已经不同了,不知道你现在的代码又改为什么样子了,所以谈...
If Cells(i, 5) = Cells(i + 1, 5) Then Sheet1.Range(Cells(i, 3), Cells(i, 5)).Copy 把这句改成 下面的试试 If Cells(i, 5) = Cells(i + 1, 5) Then Sheet1.Range(Sheet1.Cells(i, 3), Sheet1.Cells(i, 5)).Copy ...
应该是你的cells没有表名引用的sheet是哪个,默认是激活的这个sheet,你写完整看看:Call 合并(Sheet1.Range(sheet1.Cells(FR, 1), sheet1.Cells(R - 1, 1)))
代码没有错,检查:1、工作簿2.xlsm是否已经打开 2、工作簿2.xlsm下是否有名为“2015表”的工作表
“Sheet3.Range”里的Sheet3没定义。定义sheet3,Dim Sheet3 as worksheet set sheet3=thisworkbook.sheets("sheet3")或者把程序里所有没有引号的“Sheet3”,改成 Sheets("Sheet3")
可以这么考虑!要看你的具体代码,可能是range引用的单元格区域超出表格的规定,比如你在03版里引用了第65537行或257列,这都会导致引用失败。另:Range对象是针对activesheet,看看你操作的对象表中是否存在保护等情况
k = 2 * j - 2 且j=1就是2*1-2=0结果是range("A0") 。单元格必须是从1行开始的。看不明白你代码目的是什么,但你的错误是在于K不能等于0的。或改成k = 2 * j - 1
For j = 1 To num k = 2 * j - 2 ' 当j=1的时候,k=0,下面Sheet2.Range("A" & k) ,Range("A0")不存在 Sheet1.Range("j:j").Copy Destination:=Sheet2.Range("A" & k)Next