关于Excel中用 VBA 复试sheet2内容到sheet1中的 问题
在sheet1中创建个按钮(CommandButton1),当按它时,将sheet2中的特定单元格的内容(选择新粘贴,只复制字符)复制到sheet1中。我的程序如下:Pr...
在sheet1中创建个按钮(CommandButton1),当按它时,将sheet2中的特定单元格的内容(选择新粘贴,只复制字符)复制到sheet1中。我的程序如下:
Private Sub CommandButton1_Click()
r = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
s = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To r
a = Sheet1.Cells(i, 7)
For n = 1 To s
b = Sheet2.Cells(s, 3)
If a = b Then
Worksheets("Sheet2").(Cells(n, 3), Cells(n, 42)).Copy ‘这个地方出错,要求真确格式。
Worksheets("Sheet1").(Cells(i, 41)).Select
Worksheets("Sheet1").Paste
Exit For
End If
Next n
Next i
End Sub
若使用宏的编写方式,进行对sheet2的单元格选取时,选取方式为 range 会出现,程序如下:
Sheets("Sheet2").Select
Sheets("Sheet2").Activate
Range(Cells(n, 3), Cells(n, 42)).Select
Selection.Copy
Sheets("Sheet1").Select
Range(Cells(i, 41)).Select
ActiveSheet.Paste
也会出错,提示 range的select方法错误,请大虾给个舒爽的方案吧。重点是可以使用变量,复制需要的单元格
多谢了! 展开
Private Sub CommandButton1_Click()
r = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
s = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To r
a = Sheet1.Cells(i, 7)
For n = 1 To s
b = Sheet2.Cells(s, 3)
If a = b Then
Worksheets("Sheet2").(Cells(n, 3), Cells(n, 42)).Copy ‘这个地方出错,要求真确格式。
Worksheets("Sheet1").(Cells(i, 41)).Select
Worksheets("Sheet1").Paste
Exit For
End If
Next n
Next i
End Sub
若使用宏的编写方式,进行对sheet2的单元格选取时,选取方式为 range 会出现,程序如下:
Sheets("Sheet2").Select
Sheets("Sheet2").Activate
Range(Cells(n, 3), Cells(n, 42)).Select
Selection.Copy
Sheets("Sheet1").Select
Range(Cells(i, 41)).Select
ActiveSheet.Paste
也会出错,提示 range的select方法错误,请大虾给个舒爽的方案吧。重点是可以使用变量,复制需要的单元格
多谢了! 展开
4个回答
展开全部
Private Sub CommandButton1_Click()
call Macro1(3,3)
End sub
Sub Macro1(ByVal m As Integer, ByVal n As Integer)
Range(Cells(m, n), Cells(m + 3, n + 3)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet2").Select
Cells(1, 1).Select
ActiveSheet.Paste
Sheets("Sheet1").Select
End Sub
测试过了。
range的select方法错误:Range(Cells(i, 41)).Select,这句不对。
换成 Cells(i, 41).Select
call Macro1(3,3)
End sub
Sub Macro1(ByVal m As Integer, ByVal n As Integer)
Range(Cells(m, n), Cells(m + 3, n + 3)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet2").Select
Cells(1, 1).Select
ActiveSheet.Paste
Sheets("Sheet1").Select
End Sub
测试过了。
range的select方法错误:Range(Cells(i, 41)).Select,这句不对。
换成 Cells(i, 41).Select
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你直接写
thisWorksheets.sheets("Sheet2").range("A1").value=thisWorksheets.sheets("Sheet1").range("A1").value
不行吗。。。
Sheets("Sheet2").Select
Sheets("Sheet2").Activate
Range(Cells(n, 3), Cells(n, 42)).Select
Selection.Copy
Sheets("Sheet1").Select
Sheets("Sheet1").Activate
Range(Cells(i, 41)).Select
Selection.Paste
thisWorksheets.sheets("Sheet2").range("A1").value=thisWorksheets.sheets("Sheet1").range("A1").value
不行吗。。。
Sheets("Sheet2").Select
Sheets("Sheet2").Activate
Range(Cells(n, 3), Cells(n, 42)).Select
Selection.Copy
Sheets("Sheet1").Select
Sheets("Sheet1").Activate
Range(Cells(i, 41)).Select
Selection.Paste
追问
我最终还是用 “ = ” ,但是没有达到我的目的,还是不能复制粘贴,可能VAB中不能这么操作。谢谢了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不需要VBA,用函数即可 B1
=vlookup(a1,sheet2!a:c,3,false)
向下填充
如果一定要用,就用VBA中的字典,先过滤2表,添加,然后再循环1表,在字典中查找
=vlookup(a1,sheet2!a:c,3,false)
向下填充
如果一定要用,就用VBA中的字典,先过滤2表,添加,然后再循环1表,在字典中查找
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Worksheets("Sheet2").(Cells(n, 3), Cells(n, 42)).Copy ‘这个地方出错,要求真确格式。
Worksheets("Sheet2").Range(Cells(n, 3), Cells(n, 42)).Copy
Worksheets("Sheet2").Range(Cells(n, 3), Cells(n, 42)).Copy
追问
不行,提示应用程序定义或,对象定义错误
追答
没仔细看,在模块级代码中可用,在工作表级代码中貌似不行。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询