Excel精英培训网

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

[已解决]VBA

[复制链接]
发表于 2015-12-27 18:19 | 显示全部楼层 |阅读模式
本帖最后由 SHENQIAN 于 2015-12-28 11:51 编辑

Sub 取出A列()
Dim arr, arr1(1 To 100000, 1 To 4)
arr = Range("a1:d15")
   Dim x, k 'As Integer
    For x = 1 To UBound(arr)
     If arr(x, 1) = "A" Then
       k = k + 1
         arr1(k, 1) = arr(x, 1)
         arr1(k, 2) = arr(x, 2)
         arr1(k, 3) = arr(x, 3)
         arr1(k, 4) = arr(x, 4)
     End If
    Next x
   Range("a17").Resize(k, 4) = arr1
End Sub
产品
规格
单价
金额
2
12
230
5
15
450
2
12
230
3
16
120
5
15
56
7
25
112
2
12
230
5
15
450
3
16
120
7
25
112
2
12
230
7
25
112
2
12
230
5
15
450
我这个代码看着是一点问题都没有怎么提示应用程序定义或对象定义错误?请问那里有问题?

最佳答案
2015-12-27 19:41
1、不在同一工作表
2、看下A列中A是不是就是一个字符
如果不是A 那么arr1=空  那么就不符合
发表于 2015-12-27 19:41 | 显示全部楼层    本楼为最佳答案   
1、不在同一工作表
2、看下A列中A是不是就是一个字符
如果不是A 那么arr1=空  那么就不符合
回复

使用道具 举报

发表于 2015-12-27 20:55 | 显示全部楼层
通过比对可以看出你数据源的字母是在全角状态下输入的,而在VBA中“=”两边必须完全一样,所以你可以将单元格的A复制后,粘贴替换代码的那个A字后,代码能够正常运行
QQ截图20151227204320.png

评分

参与人数 1 +3 收起 理由
神隐汀渚 + 3 学习一下

查看全部评分

回复

使用道具 举报

发表于 2015-12-27 21:12 | 显示全部楼层
这个程序,不能说看似一点问题都没有,一个问题是楼上说的,表格中的字母是全角,但程序中引用的是半角;二个问题是数组arr1是动态数组,你首先就不分青红皂白的定义为一个静态数组 arr1(1 To 100000, 1 To 4),不能是大问题,但不规范。三个问题是我看楼上已给你答复了,但你没有回复,是对还是其它问题。
回复

使用道具 举报

 楼主| 发表于 2015-12-28 09:42 | 显示全部楼层
lichuanboy44 发表于 2015-12-27 21:12
这个程序,不能说看似一点问题都没有,一个问题是楼上说的,表格中的字母是全角,但程序中引用的是半角;二 ...

我昨晚下线了
谢谢你
回复

使用道具 举报

 楼主| 发表于 2015-12-28 09:42 | 显示全部楼层
神隐汀渚 发表于 2015-12-27 19:41
1、不在同一工作表
2、看下A列中A是不是就是一个字符
如果不是A 那么arr1=空  那么就不符合

谢谢你,我试试
回复

使用道具 举报

 楼主| 发表于 2015-12-28 09:44 | 显示全部楼层
悠悠05 发表于 2015-12-27 20:55
通过比对可以看出你数据源的字母是在全角状态下输入的,而在VBA中“=”两边必须完全一样,所以你可以将单元 ...

谢谢你
我试试
回复

使用道具 举报

 楼主| 发表于 2015-12-28 10:27 | 显示全部楼层
谢谢你我明白了.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 14:19 , Processed in 0.328196 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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