Excel精英培训网

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

[VBA] 031-查找的数据写入剪贴板-疑难千寻千解丛书(VBA)

[复制链接]
发表于 2011-2-17 10:33 | 显示全部楼层 |阅读模式
ET疑难千寻千解丛书之EXCEL2010编程与实践
罗刚君 章兰新 黄朝阳 编著

疑难31
可以将查找到的所有数据串连并写入剪贴板中吗
如图所示包括三个班的成绩表,按姓名进行拼音排序。如何找到每个班第一名的姓名和成绩,且写入到剪贴板,让它可以粘贴到其他对象中?
è 解决方案
利用For...Next循环查找目标值,并将所有找到的字符串合并成一个字符串,最后通过SetTextPutInCl1ipboard方法将字符串存入剪贴板中。
í 操作方法
步骤1
确定活动工作表为“三个班成绩表”,按【Alt+F11】组合键打开VBE窗口。
步骤2
选择菜单“工具”→“引用”,打开如所示的引用对话框,选择“Microsoft Forms 2.0 Object Library”。如果找不到,则可以通过“浏览”按钮找到System32文件夹中的“M2.0.DLL”文件并双击即可。
步骤3
选择菜单“插入”→“模块”,并输入以下代码:

  1. Dim MyData As DataObject  '必须引用MS Form 2.0
  2. Sub 查找三个班第一名并写入剪贴板()
  3.   Dim arr, rng, i As Integer, One As Byte, Two As Byte, Three As Byte
  4.   Dim a As Byte, b As Byte, c As Byte
  5.   Set MyData = New DataObject '建立一个DataObject 对象
  6.   arr = Range([a1], Cells(Rows.Count, 3).End(xlUp)).Value
  7.   '将所有数据赋予数组,从而提速
  8.   For i = 1 To UBound(arr) '遍历数组所有行
  9.   '如果某行第一列等于“一班”,而且该行第三列大于变量One,那么取出其行号和成绩
  10.     If arr(i, 2) = "一班" And arr(i, 3) > One Then One = arr(i, 3): a = i
  11.     If arr(i, 2) = "二班" And arr(i, 3) > Two Then Two = arr(i, 3): b = i
  12.     If arr(i, 2) = "三班" And arr(i, 3) > Three Then Three = arr(i, 3): c = i
  13.   Next
  14.   '将找到的所有数据串接起来,复制到 DataObject对象
  15.   MyData.SetText arr(a, 1) & ": " & One & Chr(10) & arr(b, 1) & ": " & Two  & Chr(10) & arr(c, 1) & ": " & Three
  16.   MyData.PutInClipboard '最后写入剪贴板
  17. End Sub
复制代码
步骤4
光标置于代码中任意位置,并按【F5】键执行过程。
步骤5
选择F1单元格,按下【Ctrl+V】组合键,可以看到F1:F3区域将产生一、二、三班的最高成绩及学生姓名,表示目标对象已经存在于剪贴板中。

=============================
上摘自《EXCEL2010编程与实践》

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2011-2-17 11:46 | 显示全部楼层
回复

使用道具 举报

发表于 2011-2-18 09:09 | 显示全部楼层
我買的這本書前天到了,昨天看了一下,和羅剛君寫的另一本《Excel VBA範例大全》有不少是雷同的!
回复

使用道具 举报

发表于 2011-4-9 21:04 | 显示全部楼层
{:011:}{:011:}{:011:}{:011:}
回复

使用道具 举报

发表于 2011-8-28 14:43 | 显示全部楼层
学习了,多谢分享!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-7 18:34 , Processed in 0.300928 second(s), 3 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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