ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 436|回复: 18

[求助] 又来麻烦大家了,定义数组遇到了一个问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-8-16 19:31 | 显示全部楼层 |阅读模式
  1. Sub main()
  2.     '获取名单表学生信息
  3.     Dim arrStu
  4.     arrStu = Sheets("Sheet1").Range("A1").CurrentRegion.Value
  5.    
  6.     '设定班级数
  7.     Dim Classes$
  8.     Classes = 5
  9.    
  10.     '获取总人数,男生数,女生数
  11.     Dim StuNum$, Boys$, Girls$
  12.     StuNum = UBound(arrStu, 1) - 1
  13.    
  14.     '获取性别列
  15.     Dim arrTmp()
  16.     arrTmp = Application.Index(arrStu, , 2)
  17.    
  18.     '筛选出男生
  19.     Dim arrboytmp()    '此处加上括号就出现错误提示:类型不匹配
  20.     'Dim arrboytmp     '去掉括号则一切正常,为什么???
  21.     arrboytmp = Filter(Application.Transpose(arrTmp), "男")
  22.    
  23.     '获取男女人数
  24.     Boys = UBound(arrboytmp)
  25.     Girls = StuNum - Boys

  26. End Sub
复制代码


定义数组变量遇到的问题1.png
定义数组变量遇到的问题2.png
定义数组变量遇到的问题3.png

定义数组时遇到的问题.zip

20.59 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2024-8-16 20:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
在我印象中加了()就是数组,只能redim了,不加,就是variant,赋值后才会准确类型

TA的精华主题

TA的得分主题

发表于 2024-8-16 20:41 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-8-16 21:39 | 显示全部楼层
本帖最后由 abc123281 于 2024-8-16 22:35 编辑

....................

TA的精华主题

TA的得分主题

发表于 2024-8-16 21:41 | 显示全部楼层
本帖最后由 abc123281 于 2024-8-16 22:35 编辑

.............................

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-16 22:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
abc123281 发表于 2024-8-16 21:39
看起来是初学者,但也是vba爱好者。
想当初我们学习也是那样的困难,那样的难于理解。
初学时,可以不需 ...

就是不想用循环,才弄数组来直接处理

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-16 22:33 | 显示全部楼层
excel玉米 发表于 2024-8-16 20:41
定义数字是%,你用的$这个是表示定义为字符串

这是另一码事了,我的问题是关于那个括号的事。

TA的精华主题

TA的得分主题

发表于 2024-8-16 22:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
jaxxcyh 发表于 2024-8-16 22:33
这是另一码事了,我的问题是关于那个括号的事。

哦,对不起,原来如此

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-16 22:36 | 显示全部楼层
quqiyuan 发表于 2024-8-16 20:14
在我印象中加了()就是数组,只能redim了,不加,就是variant,赋值后才会准确类型

带括号的可变数组,有时候不用redim,也能批量获得数据。如:
Dim arr()
arr=Range("A1").CurrentRegion
完全行得通。

TA的精华主题

TA的得分主题

发表于 2024-8-16 23:09 来自手机 | 显示全部楼层
jaxxcyh 发表于 2024-8-16 22:36
带括号的可变数组,有时候不用redim,也能批量获得数据。如:
Dim arr()
arr=Range("A1").CurrentRegio ...

也只有这一种情况,dⅰm arr或dⅰm arr()一样,其他情况就不可以了。数组赋值一般是单个或者循环,而变量体相对灵活。大概想到这些。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 14:43 , Processed in 0.040709 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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