Excel VBA复制

4
我的任务是在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 错误。

起始时,数据表格工作表上有多少行被占用?如果只有一行被占用,则从单元格A1开始按Ctrl-Down(或它的宏等效)将带您到工作表中的最后一行。一旦有两行或更多行,它将按预期工作。 - barrowc
我已经尝试过了,但还是不行。我仍然得到相同的错误,并且它将Range("A1").Select标记为问题所在。 - alistair_Welles
1个回答

1
你只在A1单元格中加入列标签是不够的,如果要使用 xlDown,在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

这里使用With ... End With 语句来控制哪个工作表获得关注。查看如何避免在Excel VBA宏中使用Select,了解更多不依赖select和activate实现目标的方法。

好的,这个可行。有没有人可以友善地解释一下每个元素的含义,或者指导我去哪里学习如何自己制作这些? - alistair_Welles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接