Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2988|回复: 9

[已解决]关于把鼠标选定单元格的值复制到另一工作薄的代码。

[复制链接]
发表于 2014-4-9 16:44 | 显示全部楼层 |阅读模式
本帖最后由 过江龙 于 2014-4-11 14:33 编辑

请各位老师帮帮忙,写一段把附件中《资料库》工作薄鼠标选定的单元格的值复制在《固定账号》工作薄中的代码,做成加载宏,谢谢! 桌面.rar (5.07 KB, 下载次数: 8)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2014-4-10 14:19 | 显示全部楼层
回复

使用道具 举报

发表于 2014-4-10 16:42 | 显示全部楼层
可以实现,不过太浪费资源,选中一次,打开工作簿一次(无论是前台或后台打开),保存关闭。
回复

使用道具 举报

 楼主| 发表于 2014-4-11 11:41 | 显示全部楼层
dsmch 发表于 2014-4-10 16:42
可以实现,不过太浪费资源,选中一次,打开工作簿一次(无论是前台或后台打开),保存关闭。

请问,代码该怎么写呢?
回复

使用道具 举报

发表于 2014-4-11 12:41 | 显示全部楼层
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2. If Not Application.Intersect(ActiveSheet.UsedRange, Target) Is Nothing Then
  3.     Application.ScreenUpdating = False
  4.     Application.DisplayAlerts = False
  5.     Dim wb As Workbook, rng As Range, y&, x&
  6.     y = Target.Column: z = Target.Value
  7.     Set wb = GetObject(ThisWorkbook.Path & "\固定账号.xls")
  8.     Application.Windows(wb.Name).Visible = True
  9.     With wb.Sheets(1)
  10.         Set rng = .Columns(y).Find(z, lookat:=xlWhole)
  11.         If rng Is Nothing Then
  12.             x = .Cells(65536, y).End(xlUp).Row + 1
  13.             .Cells(x, y) = z
  14.         End If
  15.     End With
  16.     wb.Close 1
  17.     Application.DisplayAlerts = True
  18.     Application.ScreenUpdating = True
  19. End If
  20. End Sub
复制代码
回复

使用道具 举报

发表于 2014-4-11 12:42 | 显示全部楼层
………………

新建文件夹.zip

15.57 KB, 下载次数: 5

回复

使用道具 举报

 楼主| 发表于 2014-4-11 13:20 | 显示全部楼层
dsmch 发表于 2014-4-11 12:41

谢谢关注!你的代码只能实现一个单元格的复制,我的意思是鼠标选中多少区域就复制多少区域,能实现吗?
回复

使用道具 举报

发表于 2014-4-11 13:37 | 显示全部楼层    本楼为最佳答案   
这些都不成问题,关键你的思路要理清,选中就复制过去,那边就成了一个垃圾场了。
回复

使用道具 举报

 楼主| 发表于 2014-4-11 13:52 | 显示全部楼层
本帖最后由 过江龙 于 2014-4-11 13:56 编辑
dsmch 发表于 2014-4-11 13:37
这些都不成问题,关键你的思路要理清,选中就复制过去,那边就成了一个垃圾场了。


换一种思路,先打开一个工作簿,如《固定账号》等(注意:工作簿名称不固定),然后把需要的账号从资料库工作簿中复制过来。
Sub 复制选定连续单元格()
Dim Wb As Workbook
Dim h
Dim rng As Range
    On Error Resume Next
    For Each Wb In Workbooks
       If Wb.Name = "资料库.xls" Then
        h = h + 1
       End If
    Next
    If h < 1 Then
        Workbooks.Open Filename:=ThisWorkbook.Path & "\资料库.xls"    End If
       Set rng = Application.InputBox("请选择需要复制的区域", "提示选择", , , , , , 8)
    rng.Copy Cells(Range("A65536").End(xlUp).Row + 1, 1)
End Sub
如何把红色部分指定为先前打开的工作簿?
回复

使用道具 举报

 楼主| 发表于 2014-4-11 14:32 | 显示全部楼层
换种思路后,解决。现在菜单栏做一个按钮。
Sub 复制选定连续单元格()
Dim Wb As Workbook
Dim h, arr1, Name
Dim rng As Range
    On Error Resume Next
    Name = ActiveWorkbook.Name
   
    For Each Wb In Workbooks
       If Wb.Name = "资料库.xls"  Then
        h = h + 1
       End If
    Next
    Workbooks("资料库.xls").Activate
    If h < 1 Then
        Workbooks.Open Filename:=ThisWorkbook.Path & "\资料库.xls"    End If
   
    Set rng = Application.InputBox("请选择需要复制的区域", "提示选择", , , , , , 8)
    arr1 = rng.Value
    Workbooks(Name).Activate
    Cells(Range("A65536").End(xlUp).Row + 1, 1).Resize(UBound(arr1), UBound(arr1, 2)) = arr1
End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-27 07:40 , Processed in 0.386295 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表