excel 使用VBA代码复制和粘贴数据

jgwigjjp  于 2023-06-30  发布在  其他
关注(0)|答案(3)|浏览(288)

我在电子表格上有一个按钮,当按下它时,应该允许用户打开一个文件,然后复制电子表格“数据”的A-G列,然后将这些列中的数据粘贴到当前工作表上。
我在代码中有一个逻辑错误;它会运行,但会将所选内容粘贴到错误的位置。
我在引用这两本练习册时遇到了麻烦。
下面是我的代码:

Sub Button1_Click()
    Dim excel As excel.Application
    Dim wb As excel.Workbook
    Dim sht As excel.Worksheet
    Dim f As Object

    Set f = Application.FileDialog(3)
    f.AllowMultiSelect = False
    f.Show

    Set excel = CreateObject("excel.Application")
    Set wb = excel.Workbooks.Open(f.SelectedItems(1))
    Set sht = wb.Worksheets("Data")

    sht.Activate
    sht.Columns("A:G").Select
    Selection.Copy
    Range("A1").Select
    ActiveSheet.Paste

    wb.Close
End Sub
2ekbmq32

2ekbmq321#

使用PasteSpecial方法:

sht.Columns("A:G").Copy
Range("A1").PasteSpecial Paste:=xlPasteValues

但是你的大问题是你把你的ActiveSheet改为“数据”,而不是把它改回来。你不需要做激活和选择,按照我的代码(这假设你的按钮是在工作表上,你要复制)。

sy5wg1nm

sy5wg1nm2#

“所以从这次讨论中,我认为这应该是代码。

Sub Button1_Click()
    Dim excel As excel.Application
    Dim wb As excel.Workbook
    Dim sht As excel.Worksheet
    Dim f As Object

    Set f = Application.FileDialog(3)
    f.AllowMultiSelect = False
    f.Show

    Set excel = CreateObject("excel.Application")
    Set wb = excel.Workbooks.Open(f.SelectedItems(1))
    Set sht = wb.Worksheets("Data")

    sht.Activate
    sht.Columns("A:G").Copy
    Range("A1").PasteSpecial Paste:=xlPasteValues

    wb.Close
End Sub

“让我知道这是正确的还是遗漏了一个步骤。谢谢

iyzzxitl

iyzzxitl3#

如果您正在尝试使用活动单元格。即不是Range()。
示例:

ActiveCell.Offset(1, 0).Activate
Selection.Cut

ActiveCell.Offset(-1, 1).Activate

Selection.Paste
ActiveCell.Offset(1, -1).Activate

相关问题