Excel VBA复制

我的任务是在Excel中创build一个可search的数据库与一个条目表单。 我需要一个macros,将数据从input表单移动到数据库表中将活动单元格向下偏移1行,并仅复制值(而不是格式)

每次尝试运行macros时,代码中都会出现运行时错误。 我没有使用VB或VBA的经验; 请告诉我这是什么问题。

Sheets("Database").Select 'Navigates to Database worksheet If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData End If 'Clears filters Sheets("Entry Form").Select 'Navigates back to Entry Form worksheet Range("E10:L10").Select ' select date, period, and data Selection.Copy Sheets("datatable").Select ' navigate to datatable tab Range("A1").Select Selection.End(xlDown).Select ' ctrl-down to last occupied row, ActiveCell.Offset(1, 0).Select ' then one more to first blank row Selection.PasteSpecial Paste:=xlPasteValues 'Pastes data as values only into the Database worksheet Sheets("Entry Form").Select 'Navigates to Entry Form worksheet Application.CutCopyMode = False 'clears copy data from clipboard Range("E10, L10").Select Selection.ClearContents 'Clears data from drop down selections Range("E10").Select 'Returns selection back to Date entry box 

它进入下一页的底部,并给出1004错误。

如果您要使用xlDown则不仅需要A1中的列标签。 在列A中必须至less有一个以上的值,否则将遍历到工作表的底部。 从工作表的底部向上看,然后向下偏移一行通常会更好。

 With Sheets("Database") 'Primarily use Database worksheet If .FilterMode Then .ShowAllData With .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) 'look from bottom up then down 1 row 'direct value transfer is faster than Copy, Paste Special, Values .Cells.Resize(1, 8) = Sheets("Entry Form").Range("E10:L10").Value End With End With With Sheets("Entry Form") 'Primarily use Entry Form worksheet .Range("E10:L10").ClearContents 'Clears data from drop down selections .Range("E10").Select 'Returns selection back to Date entry box End With 

这使得With … End With语句可以控制哪个工作表正在受到关注。 请参阅如何避免使用Excel中的selectVBAmacros来获取更多的方法来摆脱依靠select和activate来实现您的目标。