要复制的Excel VBA

要复制的Excel VBA,excel,copy,vba,Excel,Copy,Vba,我的任务是用一个输入表单在Excel中创建一个可搜索的数据库。我需要一个宏将数据从输入表单移动到数据库工作表,将活动单元格向下偏移1行,并仅复制值(而不是格式) 每次尝试运行宏时,代码中都会出现运行时错误。我没有VB或VBA的经验;请告诉我这有什么问题 Sheets("Database").Select 'Navigates to Database worksheet If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData

我的任务是用一个输入表单在Excel中创建一个可搜索的数据库。我需要一个宏将数据从输入表单移动到数据库工作表,将活动单元格向下偏移1行,并仅复制值(而不是格式)

每次尝试运行宏时,代码中都会出现运行时错误。我没有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中必须至少还有一个值,否则将遍历到工作表的底部。通常最好从工作表底部向上看,然后向下偏移一行

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

这利用来控制哪个工作表受到关注。有关摆脱依赖选择和激活来实现目标的更多方法,请参阅。

数据表上有多少行已占用?如果只有一行被占用,则单元格A1中的Ctrl Down(或其等效宏)将带您进入工作表中的最后一行。一旦你有两行或更多行,它就会像预期的那样工作。我已经试过了,但它也不工作。我仍然会得到相同的错误和它的突出显示范围(“A1”)。选择作为问题确定,这样就工作了。有没有人能解释一下每一个元素的含义,或者告诉我在什么地方我可以学会自己制作这些元素?