Excel精英培训网

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

[已解决]VBA 跨工薄复制列 粘贴列

[复制链接]
发表于 2015-9-12 09:24 | 显示全部楼层 |阅读模式
把一个表中空的列,由另一工作薄的表中vba实现复制 粘贴、
最佳答案
2015-9-12 13:50
见附件

00011.rar

24.62 KB, 下载次数: 15

vba

发表于 2015-9-12 13:50 | 显示全部楼层    本楼为最佳答案   
见附件

Downloads.rar

35.48 KB, 下载次数: 36

评分

参与人数 1 +1 收起 理由
凌文 + 1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2015-9-12 14:53 | 显示全部楼层
你的那个按扭,是怎么连到执行代码的
回复

使用道具 举报

发表于 2015-9-12 15:25 | 显示全部楼层
凌文 发表于 2015-9-12 14:53
你的那个按扭,是怎么连到执行代码的

开发工具→插入→表单控件(左上第一个,按钮),用鼠标划定按钮位置及大小,在弹出对话框中选择对应的宏名称,确定

评分

参与人数 1 +1 收起 理由
凌文 + 1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2015-9-12 18:06 | 显示全部楼层
ar1 = Range(Range("a5"), Range("b5").End(xlDown).Offset(, 9))
iffset(, 9 )这个9指的是什么
回复

使用道具 举报

发表于 2015-9-12 18:53 | 显示全部楼层
凌文 发表于 2015-9-12 18:06
ar1 = Range(Range("a5"), Range("b5").End(xlDown).Offset(, 9))
iffset(, 9 )这个9指的是什么

offset(x,y)是指向下偏移X格,向右偏移Y格, offset(,9)的意思就是向下偏移0,向右偏移9
回复

使用道具 举报

 楼主| 发表于 2015-9-12 22:24 | 显示全部楼层
本帖最后由 凌文 于 2015-9-12 22:25 编辑

报错代码为 "  1 To UBound(ar1)"
ar1 = Range(Range("a5"), Range("b5").End(xlDown).Offset(, 9))
af1的值,是多少,我看不出来,
我移殖到我的文件中时,没有改动源代码,
报错为 错误代码为  6     溢出
回复

使用道具 举报

 楼主| 发表于 2015-9-13 11:28 | 显示全部楼层
本帖最后由 凌文 于 2015-9-13 11:30 编辑
yorkchenshunan 发表于 2015-9-12 18:53
offset(x,y)是指向下偏移X格,向右偏移Y格, offset(,9)的意思就是向下偏移0,向右偏移9

报错代码为 "  1 To UBound(ar1)"
ar1 = Range(Range("a5"), Range("b5").End(xlDown).Offset(, 9))
af1的值,是多少,我看不出来,
我移殖到我的文件中时,没有改动源代码,
报错为 错误代码为  6     溢出


Range("a5").Resize(UBound(ar1), UBound(ar1, 2)) = ar1  这一句怎么理解啊
回复

使用道具 举报

发表于 2015-9-13 17:35 | 显示全部楼层
ar1是二位数组,将A5:K?的数据写入了AR1,其中K?的?为B列最下一行的行号。你如果不知道为什么出错,将错误文件发上来我给你看看
回复

使用道具 举报

 楼主| 发表于 2015-9-13 19:06 | 显示全部楼层
本帖最后由 凌文 于 2015-9-13 19:25 编辑
yorkchenshunan 发表于 2015-9-13 17:35
ar1是二位数组,将A5:K?的数据写入了AR1,其中K?的?为B列最下一行的行号。你如果不知道为什么出错,将错误 ...

   但是只能是编辑代的页面中通过,到了按钮页,就报错  ,(UBound(ar2)=35,   ar1(i, 1) = ar2(i, 1)  ,中的i=36)而实际UBound(ar2)=35   只有35 报不下标越界
我重新用你的代码的表中,只有35条记录,

修改了一下,通过了
Application.DisplayAlerts = FalseDim wb As Workbook
Dim ar1, ar2 ', i%, j%
Dim i As Long
Dim j As Long
ar1 = Range(Range("a2"), Range("b5").End(xlDown).Offset(, 9))
Set wb = Workbooks.Open(ThisWorkbook.Path & "\Book2.xlsx")
ar2 = Range(Range("a2"), Range("a2").End(xlDown).Offset(, 69))
For i = 1 To UBound(ar1)
    For j = 1 To UBound(ar2)
        If ar1(i, 2) = ar2(i, 2) Then //这一行代码不能理解功能上,
            ar1(i, 1) = ar2(i, 1)
            ar1(i, 3) = ar2(i, 3)
            ar1(i, 4) = ar2(i, 25)
            ar1(i, 5) = ar2(i, 13)
            ar1(i, 6) = ar2(i, 48)
            ar1(i, 7) = ar2(i, 56)
            ar1(i, 8) = ar2(i, 60)
            ar1(i, 9) = ar2(i, 68)
            ar1(i, 10) = ar2(i, 20)
            ar1(i, 11) = ar2(i, 23)
            Exit For
        End If
    Next j
Next i
    wb.Close False
    Range("a5").Resize(UBound(ar1), UBound(ar1, 2)) = ar1
Application.DisplayAlerts = True
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 08:09 , Processed in 0.807262 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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